我想定期(比如每天早上 4 点)打包目录,所以我打算使用 crontab。如何才能将日期包含在文件名中,例如 srcdirectorybackup5-30-09.tar,以便区分所有 tar 文件。
答案1
您需要 ISO 格式的日期 - YYYY-MM-DD。这样它们就可以正确排序。
tar -cf srcdirectorybackup`date +%F`.tar /path/to/src
假设 tar 和 date 在路径中。您可以将此行添加到 crontab。
哎呀!埃里克·劳完全正确。如果在 crontab 文件中使用这些 % ,则需要对其进行转义,否则它们将被解释为换行符!
因此,如果您要将此行直接放入 crontab,请用“\”转义“%”。
tar -cf srcdirectorybackup`date +\%F`.tar /path/to/src
代表真的应该去找埃里克劳......
答案2
确认!
一些人提出了精彩的日期 +%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
您可以考虑使用“date +%w”作为 tarfile 的一部分,这样您就拥有了过去 7 天的每一天的 tar 文件,而不必担心清除旧副本。
答案3
在许多 Linux 发行版中,您必须遵循以下步骤:
- crontab -e
- 在文本编辑器中输入:0 4 * * * /home/scripttaringsrc.sh
- 使用“:wq”退出编辑器并保存文件
创建文件 /home/scripttaringsrc.sh
tar -cf srcdir 'date +%Y-%m-%d_%Hh%Mm'.tar /path/to/dst
不要忘记 chmod scripttaringsrc.sh 来执行权限。
答案4
我有这个小脚本,可以打包我的整个 etc 目录并将其保存在具有正确日期的目录中。
保存此脚本并将其放入 /etc/cron.daily/(如果在您的 dist 中可用),因为该目录中的脚本最常执行“每天一次”,有时大约执行 4 次。但是,快速查看 /etc/crontab 将显示准确的详细信息。
#!/bin/sh
date=`date +%Y%m%d-%H%M`
#echo Tid: $date
bpath=/var/backup/computername
cd $bpath/
mkdir sys$date
cd sys$date
datumfil=$bpath/sys$date/$date
> $datumfil
tar -cvzf etc.tar.gz /etc/ > etc.tar.gz.list
md5sum * > md5sum
ls -lh >> md5sum
注意:您需要稍微改变一下才能得到您想要的“正确”的文件名。
/约翰