我使用以下命令为我的文件进行每日备份
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 +)
我永远不会将我的文件备份,我在这里的命令中错过了什么
答案 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。