3

script shell de sauvegarde blog wordpress

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.

sauvegarde logo png

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à! :-)

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

3 commentaires

  1. Ç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…)

  2. Salut Julien,
    exact le script tourne depuis 5 ans et sans problème :-D

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.