DHamrick Asked: 2009-06-30 16:21:13 +0800 CST2009-06-30 16:21:13 +0800 CST 2009-06-30 16:21:13 +0800 CST 使用 Crontab 定期 tar 目录 772 我想定期 tar 一个目录(比如每天早上 4 点),所以我打算使用 crontab。我怎样才能将日期放在文件名中,即 srcdirectorybackup5-30-09.tar 以便我可以区分所有 tar 文件。 cron tar 5 个回答 Voted ericslaw 2009-06-30T17:15:08+08:002009-06-30T17:15:08+08:00 确认! 几个人提出了美妙的日期 +%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' 作为 tar 文件的一部分,这样您在过去 7 天的每一天都有一个 tar 文件,而不必担心清除旧副本。 Best Answer Evan Anderson 2009-06-30T16:31:53+08:002009-06-30T16:31:53+08:00 您需要 ISO 格式的日期 - YYYY-MM-DD。他们以这种方式正确排序。 tar -cf srcdirectorybackup`date +%F`.tar /path/to/src 假设 tar 和 date 在路径中。您可以将此行添加到 crontab。 绉纱!ericslaw是绝对正确的。如果在 crontab 文件中使用这些 %,则需要对其进行转义,否则它们将被解释为换行符! 因此,如果您打算将此行直接放入 crontab,请使用“\”转义“%”。 tar -cf srcdirectorybackup`date +\%F`.tar /path/to/src 代表真的应该去爱立信... Geo 2009-06-30T16:38:52+08:002009-06-30T16:38:52+08:00 在许多 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 不要忘记对 scripttaringsrc.sh 进行 chmod 以执行权限。 Babu 2009-06-30T16:34:22+08:002009-06-30T16:34:22+08:00 假设您可以处理 crontab 的东西,对于 bash,命令如下: bash -c "tar -cf `date +%F`test.tar foo bar" 当然, foo 和 bar 是文件, test.tar 是你想要的文件后缀的其余部分,你可以输入你需要的任何选项:) 这适用于 cygwin 和 linux。我对 cron 不够熟悉,不知道是否有必要告诉它使用哪个 shell。 Johan 2009-06-30T21:31:25+08:002009-06-30T21:31:25+08:00 我有这个小脚本可以打包我的整个 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 注意:您需要稍作更改,以便获得所需的“正确”文件名。 /约翰
确认!
几个人提出了美妙的日期 +%Y%m%d_%H%M%S 风格的解决方案,但没有人提到 crontabs 中“%”的主要警告......
'%' 相当于 '\n' 所以你的 cronjob 可能会触发并神秘地失败!
你更可能想用这样的反斜杠简单地转义它(我也想获得某种库存或其他输出来检查它是否运行)。
您可能会考虑使用 `date +%w' 作为 tar 文件的一部分,这样您在过去 7 天的每一天都有一个 tar 文件,而不必担心清除旧副本。
您需要 ISO 格式的日期 - YYYY-MM-DD。他们以这种方式正确排序。
假设 tar 和 date 在路径中。您可以将此行添加到 crontab。
绉纱!ericslaw是绝对正确的。如果在 crontab 文件中使用这些 %,则需要对其进行转义,否则它们将被解释为换行符!
因此,如果您打算将此行直接放入 crontab,请使用“\”转义“%”。
代表真的应该去爱立信...
在许多 Linux 发行版中,这是您必须遵循的步骤:
创建文件 /home/scripttaringsrc.sh
不要忘记对 scripttaringsrc.sh 进行 chmod 以执行权限。
假设您可以处理 crontab 的东西,对于 bash,命令如下:
当然, foo 和 bar 是文件, test.tar 是你想要的文件后缀的其余部分,你可以输入你需要的任何选项:)
这适用于 cygwin 和 linux。我对 cron 不够熟悉,不知道是否有必要告诉它使用哪个 shell。
我有这个小脚本可以打包我的整个 etc 目录并将其保存在具有正确日期的目录中。
保存此脚本并将其放入 /etc/cron.daily/ (如果在您的 dist 中可用),因为该目录中的脚本通常执行“每天一个”,有时在 4 左右。但是快速查看 / etc/crontab 将显示确切的详细信息。
注意:您需要稍作更改,以便获得所需的“正确”文件名。
/约翰