使用 Crontab 定期对目录进行 tar

DHa*_*ick 6 tar cron

我想定期(例如每天凌晨 4 点)对目录进行 tar 压缩,因此我计划使用 crontab。如何在文件名中包含日期,即 srcdirectorybackup5-30-09.tar,以便我可以区分所有 tar 文件。

eri*_*law 13

确认!

有几个人提出了美妙的日期 +%Y%m%d_%H%M%S 风格的解决方案,但没有人提到 crontabs 中 '%' 的主要警告......

'%' 它等价于 '\n' 所以你的 cronjob 可能会触发并神秘地失败!

你更可能想简单地用这样的反斜杠转义它(我也喜欢获得某种库存或其他输出来检查它是否运行)。

0 4 * * * tar vcf /path/to/dsttarfile.tar.`date +\%Y\%m\%d_\%H\%M\%S` /path/to/srcdir > /path/to/logfile.log 2>&1
Run Code Online (Sandbox Code Playgroud)

您可能会考虑使用 `date +%w' 作为 tarfile 的一部分,这样过去 7 天的每一天都有一个 tar 文件,而不必担心清除旧副本。


Eva*_*son 9

您需要 ISO 格式的日期 - YYYY-MM-DD。他们以这种方式正确排序。

tar -cf srcdirectorybackup`date +%F`.tar /path/to/src
Run Code Online (Sandbox Code Playgroud)

假设 tar 和 date 在路径中。您可以将此行添加到 crontab。

绉纱!ericslaw是绝对正确的。如果在 crontab 文件中使用这些 % ,则需要对其进行转义,否则它们将被解释为换行符!

因此,如果您要将这一行直接放入 crontab 中,请将“%”转义为“\”。

tar -cf srcdirectorybackup`date +\%F`.tar /path/to/src
Run Code Online (Sandbox Code Playgroud)

该代表真的应该去 ericslaw ......