如何将路径中含有变量的目录复制到具有标准路径的指定目标

如何将路径中含有变量的目录复制到具有标准路径的指定目标

我想自动执行以下操作。需要每天将名为 的文件夹中的一堆内容~/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的。

相关内容