如何将 rsync 输出重定向到带有日期和时间戳的目录?

如何将 rsync 输出重定向到带有日期和时间戳的目录?

我想将输出重定向rsync到带有日期和时间戳的特定目录。

例子:rsync -r source-dir dest-dir/current-date-time

有什么方法可以自动创建“当前日期时间”文件夹吗?
我的主要目标是在 cron 作业中运行该rsync命令,并且我希望将输出存储在目标下的多个目录(带有日期和时间)中。

这可以通过单个rsync命令实现吗?

我确实了解-t保留修改时间,因此我可以使用, rsync -avH -t <source> <dest>但是可以在目的地创建目录(带有日期和时间)吗?

答案1

据我所知,不可能从 rsync 命令中创建目录。

但是编写一个像这样的简单 bash 脚本怎么样:

#!/bin/bash
myDate="$(date +%F)"
mkdir -p "dest-dir/$myDate"
rsync -r source-dir dest-dir/"$myDate"
exit 0

答案2

您可以使用命令:

rsync -avH <source> <dest>/"$(date +'%Y-%m-%d-%H-%M-%S')"/

命令替换 ( $(...)) 用于<dest>在当前日期 + 时间下创建新目录的名称。

<source>请注意,上面的命令将在<dest>/<current_date-time>/.如果您只想复制内容使用<source>

rsync -avH <source>/ <dest>/"$(date +'%Y-%m-%d-%H-%M-%S')"/

(相关的是/后面的<source>)。

正如中提到的你有另一个答案,有一些date实现(例如GNUdate),%F格式说明符可用于“ISO 格式的日期”,从而缩写为'%Y-%m-%d'.请注意,其中%F未指定POSIX对于该date实用程序(但许多date实现都能够使用此格式字符串,因为它们依赖于strftime(),这将支持它)。

相关内容