我想自动执行以下操作。需要每天将名为 的文件夹中的一堆内容~/Backup/28_10_2019_files/LoadsofStuff
复制到名为 的文件夹中。~/Backup/Daily/LoadsofStuff
由于源文件夹路径包含日期语法,它会每天变化,例如今天的文件夹,但明天的路径将是~/Backup/29_10_2019_files/LoadsofStuff
等等。
遗憾的是,此语法是由生成备份的应用程序强制执行的,它破坏了我的复制 cronjob。
有没有办法确保 cronjob 可以复制文件夹并覆盖到设置的目标文件夹,而源路径每天都不同?我需要如何设置 cronjob 才能自动了解源文件夹路径正在更改?我只希望LoadsofStuff
在每日文件夹中有 1 个最近的副本。
感谢您付出的时间和精力,鲁本
答案1
这是一个您可以使用的示例。
34 23 * * * /bin/bash -c '/usr/bin/rsync -aH --delete ~/"Backup/$(date +\%d_\%m_\%Y)_files/LoadsofStuff/" ~/"Backup/Daily/LoadsofStuff"'
前 5 列指定作业的运行时间:您所在时区的小时、分钟等。上例中为晚上 11:34。有关这 5 列的详细信息,请参阅Crontab – 快速参考。5列后面是需要运行的命令。
要配置 cron 作业,请键入EDITOR=nano crontab -e
(或者,如果您愿意,vi
可以替换为nano
)并将上述行(全部在一行中)添加到文件中。要列出当前作业,请键入crontab -l
。
该示例将~/Backup/Daily/LoadsofStuff
每天覆盖并删除文件。我只是想确保这是你想要的。
注意/
源文件夹末尾的 。这告诉 rsync 复制所有内容里面将LoadsofStuff
文件夹复制到目标文件夹。
每次运行时,bash 都会运行date
并替换$(date +%d_%m_%Y)
输出。每个百分号前的反斜杠是必需crontab
的。