我想将输出重定向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()
,这将支持它)。