Voici un script très simple de sauvegarde pour un blog de type WordPress, qui utilise une base de donnée MySql.
Ici la sauvegarde s’effectue sur un autre serveur.
Pré requis
échange de clé publique pour la communication entre les deux serveurs, voir cet article -> https://memo-linux.com/mise-en-place-dune-synchro-entre-deux-serveurs-avec-certificat/
Création du script
ici le script ce trouve dans /home/fred/backup/script/
nano backup_blog.sh
le script
#!/bin/bash # ## on se place dans le repertoire ou l'on veut sauvegarder les bases cd /home/fred/backup/ #on initialise la variable de temps timestamp=$(date +%d-%m-%Y_%Hh-%Mmn-%Ss) # dump de la base du blog mysqldump -u root -pMDP blog --log-error=/var/log/mysql/dump-errors.log | gzip -f9 > $timestamp.BLOG.sql.gz #ajout du log de la sauvegarde + les erreurs éventuelles echo "Sauvegarde de la base blog: $timestamp.BLOG.sql.gz" > /var/log/sauv_sql.log cat /var/log/mysql/dump-errors.log >> /var/log/sauv_sql.log #on copy la base sur un autre serveur scp $timestamp.BLOG.sql.gz root@serveur_backup:/home/backup/bdd/ #on synchronise la partie web du blog rsync -avznu --delete --stats /var/www/blog/ root@serveur_backup:/home/backup/www/blog/ >> /var/log/sauv_sql.log #on nettoie les vielles sauvegardes de plus de 5 jours en local find /homefred/backup/bdd/ -name "*.sql*" -mtime +5 -exec rm -vf {} \; ##on liste la sauvegarde effectuée et envoie du log par mail ls -l /home/fred/backup/ >> /var/log/sauv_sql.log mail -s [BLOG]Sauvegarde fred@domaine.tld </var/log/sauv_sql.log
on rend le script exécutable
chmod +x backup_blog.sh
Planification du script
édition de crontab
sudo crontab -e
ajout de la tache backup_blog.s
##sauvegarde journalière 00 04 * * * /home/fred/script/backup_blog.sh > /dev/null
relance du deamon cron pour la prise en compte de la nouvelle tache
sudo service cron restart
Nettoyage sur le serveur de sauvegarde
pour le nettoyage du serveur de sauvegarde, créer un script
nano netsauvbdd.sh
le script qui ce trouve dans /home/backup/script/
#!/bin/bash # #on nettoie find /home/backup/bdd/ -name "*.sql*" -mtime +5 -exec rm -vf {} \;
rendre exécutable le script
chmod +x netsauvbdd.sh
on planifie la tache de nettoyage
sudo crontab -e
##sauvegarde journalière 00 08 * * * /home/backup/script/netsauvbdd.sh > /dev/null
et voilà! :-)
Ça va bientôt faire 5 ans que ce script est présent sur ton site web et… Je l’utilise depuis plus d’un an sans pb ! Je me suis permis de faire quelques modifs…
Merci beaucoup pour le partage ! (Oui, c’est un peu « tard » pour un remerciement…)
Salut Julien,
exact le script tourne depuis 5 ans et sans problème :-D