按当前日期创建tar文件命名备份从不运行

时间:2013-11-26 07:10:02

标签: linux cron tar

我使用以下命令为我的文件进行每日备份

0 0 * * * tar czf /var/backups/file_$(date +%Y-%m-%d).tar.gz  /home/files

我的cron日志显示

11月26日11:00:01 CROND [16646] :( root)CMD(tar czf / var / backups / file _ $(date +)

我永远不会将我的文件备份,我在这里的命令中错过了什么

1 个答案:

答案 0 :(得分:8)

字符%在crontab文件中具有特殊含义。它表示换行符。转义%个字符,命令应按预期工作。

所以而不是:

0 0 * * * tar czf /var/backups/file_$(date +%Y-%m-%d).tar.gz  /home/files

使用:

0 0 * * * tar czf /var/backups/file_$(date +\%Y-\%m-\%d).tar.gz  /home/files

大多数现代cron守护进程都不会将\传递给shell。如果发生这种情况,您可能需要将备份命令放在单独的脚本中,然后从crontab调用它(这样cron守护程序不会解释%个字符)。

请将以下内容加入/usr/local/cronscipts/my-backup-script

#!/bin/sh

tar czf /var/backups/file_$(date +%Y-%m-%d).tar.gz  /home/files

然后修改你的cronjob来调用那个脚本:

0 0 * * * /usr/local/cronscripts/my-backup-script.

此处的文件名和路径仅是示例。使用最适合你的东西并记住给脚本正确的权限即。至少0700。