J'ai un script appelé 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
Je l'ai rendu exécutable:
Sudo chmod +x backup.sh
Ensuite, j'ai essayé de modifier cron
with crontab -e
.
J'ajoute:
# m h dom mon dow command
0 0 * * * /home/jazuly/backup.sh
mais lorsque cron
envoie le fichier backup.Zip à mon courrier électronique, je le télécharge et l’ouvre, et le fichier est corrompu.
Si je lance le script manuellement avec:
$ Sudo chmod +x backup.sh
$ ./backup.sh
Je peux ouvrir le fichier Zip.
Voici les étapes de la façon dont je l'ai corrigé:
var/lib/automysqlbackup
en 777
& jazuly.jazuly
.backupscript/cp2google/
à home/jazuly
.wait
pour chaque instruction.Mon code final:
#!/bin/bash
Zip -r backup.Zip /var/lib/automysqlbackup/
wait
php cp2google.php backup.Zip
wait
rm -f backup.Zip
Et mon cron
:
0 0 * * * /home/jazuly/backup.sh
sauvegarder tous les minuit/jours.
Je ne pense pas qu'il soit nécessaire d'écrire le chemin complet si le fichier .sh
se trouve dans le même chemin avec ce que vous voulez exécuter.
Vous devrez utiliser le chemin complet dans tout script exécuté par cron. Donc, ne faites pas cd ~
, donnez plutôt cd /home/jazuly
Pour plus de débogage, vous pouvez également rediriger la sortie du script cron vers un fichier, avec /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt
Donc toute la commande:
# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt
Essayez d'utiliser des chemins complets
#!/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
Et ajoutez /bin/bash
dans cron
# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh
Et vérifiez les autorisations pour les fichiers backup.Zip
, backupdatabaseterbaru-c771cd4f4fcf.p12