我有一个名为的脚本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
我让它可执行:
sudo chmod +x backup.sh
然后我尝试cron
用进行编辑crontab -e
。
我加:
# m h dom mon dow command
0 0 * * * /home/jazuly/backup.sh
但是当cron
将 backup.zip 发送到我的电子邮箱时,我下载并打开它,却发现文件已损坏。
如果我使用以下方法手动运行脚本:
$ sudo chmod +x backup.sh
$ ./backup.sh
我可以打开该 zip 文件。
答案1
您将需要在任何 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
答案2
尝试使用完整路径
#!/bin/bash
/usr/bin/zip -r /home/jazuly/backup.zip /var/lib/automysqlbackup/
/usr/bin/php /home/jazuly/backupscript/cp2google/cp2google.php /home/jazuly/backup.zip
rm -f /home/jazuly/backup.zip
并添加/bin/bash
cron
# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh
并检查文件的权限backup.zip
,backupdatabaseterbaru-c771cd4f4fcf.p12
答案3
以下是我修复该问题的步骤:
- 将 的权限 & 所有者更改
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
和我的
cron
:0 0 * * * /home/jazuly/backup.sh
每天午夜/白天备份。
.sh
如果文件与您要执行的路径相同,我认为就没有必要写完整路径。