无法在cron中执行命令

我试图将rsync配置为每天使用当天的名称备份目录。

rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"%a"` 

上面的命令工作正常,并在Mon目录中同步数据。 但是当我在cron中复制相同的命令时,它无效

 13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"%a"` 

但是,当我从cron中删除`date +“%a”`部分时,它可以工作。
为什么cron没有执行`date +“%a”`

必须使用\来转义%符号,因为它是在crontab结束命令的另一种方法。

“第六个”字段(行的其余部分)指定要运行的命令。 该行的整个命令部分,直到换行符或%字符,将由/ bin / sh或由cronfile的SHELL变量中指定的shell执行。 除非使用反斜杠()进行转义,否则命令中的百分号(%)将更改为换行符,并且第一个%之后的所有数据将作为标准输入发送到命令。

所以你的crontab行看起来像:

 13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"\%a"` 

资料来源:

您还可以使用:

 13 16 * * * bash -c "rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +'%a'`"