使用 Crontab 定期对目录进行 tar

使用 Crontab 定期对目录进行 tar

我想定期(比如每天早上 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 发行版中,您必须遵循以下步骤:

  1. crontab -e
  2. 在文本编辑器中输入:0 4 * * * /home/scripttaringsrc.sh
  3. 使用“: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

注意:您需要稍微改变一下才能得到您想要的“正确”的文件名。

/约翰

相关内容