我想定期(例如每天凌晨 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 文件,而不必担心清除旧副本。
您需要 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 ......