从目录创建备份

从目录创建备份

我想使用 cron 从目录创建备份。我写了以下命令:

cd 路径 && sudo zip -r "backup-$(date +" %Y-%m-%d").zip" git/ && sudo mv "backup-$(date +" %Y-%m-%d").zip" /backup/

当我从命令行调用它时,一切都正常。但是当我将它放到 cron 时,它不起作用。日志仅包含此命令的一部分,没有其他内容。我该怎么办?

Crontab内容:

* * * * * cd path && zip -r "backup-$(date +"%Y-%m-%d").zip" git/ && mv "backup-$(date +"%Y-%m-%d").zip" /backup/

答案1

根据要求,我将其移至答案:

将要运行的命令放在.sh文件,例如:

1. vi test.sh

cd path && sudo zip -r "backup-$(date +"%Y-%m-%d").zip" git/ && sudo mv "backup-$(date +"%Y-%m-%d").zip" /backup/

保存并退出。

在控制台上运行

2. chmod +x test.sh

使用您想要的周期从 cron 调用文件:

3. crontab -e

#Run every hour
0 * * * * /path/to/file/test.sh

确保使用 cron 执行文件的用户有权限运行该文件。

答案2

发生这种情况的原因是(crontab手册页):

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

正如您在备份命令中使用时所建议的%,“您应该将其放在 .sh 文件中,chmod +x file然后从 cron 调用该文件”,恩克斯

相关内容