创build通过当前date备份命名的tar文件永远不会运行

即时通讯使用以下命令为我的文件做每日备份

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

我的cron日志显示

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

我从来没有得到我的文件备份,我在这里命令我想念什么

字符%在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至少。