我有一个脚本叫做backup.sh:
#!/bin/bash
sudo zip -r /home/jazuly/backup.zip /var/lib/automysqlbackup/
cd /home/jazuly/backupscript/cp2google/
php cp2google.php /home/jazuly/backup.zip
cd ~
rm -f /home/jazuly/backup.zip
Run Code Online (Sandbox Code Playgroud)
我使它可执行:
sudo chmod +x backup.sh
Run Code Online (Sandbox Code Playgroud)
然后我尝试cron用crontab -e.
我加:
# m h dom mon dow command
0 0 * * * /home/jazuly/backup.sh
Run Code Online (Sandbox Code Playgroud)
但是当cron将backup.zip 发送到我的电子邮件时,我下载并打开它,但文件已损坏。
如果我手动运行脚本:
$ sudo chmod +x backup.sh
$ ./backup.sh
Run Code Online (Sandbox Code Playgroud)
我可以打开压缩文件。
您将需要在任何 cron 执行的脚本中使用完整路径。所以,不要做cd ~,而是给cd /home/jazuly
为了进一步调试,您还可以将 cron 脚本的输出重定向到一个文件,使用 /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt
所以整个命令:
# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt
Run Code Online (Sandbox Code Playgroud)
以下是我修复它的步骤:
var/lib/automysqlbackup为777& jazuly.jazuly。backupscript/cp2google/到home/jazuly。wait每个语句。我的最终代码:
#!/bin/bash
zip -r backup.zip /var/lib/automysqlbackup/
wait
php cp2google.php backup.zip
wait
rm -f backup.zip
Run Code Online (Sandbox Code Playgroud)
和我的cron:
0 0 * * * /home/jazuly/backup.sh
Run Code Online (Sandbox Code Playgroud)
每个午夜/每天备份。
.sh我认为如果文件与您要执行的文件位于同一路径中,则无需编写完整路径。