Мне назвали сценарий 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-файл.
Вот шаги того, как я зафиксировал его:
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
файл находится в том же пути с тем, что Вы хотите выполнить.
Необходимо будет использовать полный путь в выполняемом сценарии любого крона. Так, не делайте cd ~
, давайте вместо этого cd /home/jazuly
Для дальнейшей отладки, можно также перенаправить вывод сценария крона в файл, с /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
Попытайтесь использовать полные пути
#!/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
в кроне
# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh
И полномочия проверки для файлов backup.zip
, backupdatabaseterbaru-c771cd4f4fcf.p12