BASH - Sauvegarder son site et sa base de données
Table des matières
Quand on a un site, ce qui est bien, c'est de le sauvegarder. Voici ci-dessous le script que je lance à la main lorsque je souhaite le sauvegarder.
C'est le script de linuxtricks. Adapter avec les noms que vous voulez
Le dossier personnel : /home/linuxtricks
Le dossier de sauvegarde : /home/linuxtricks/sauvegarde
Le script de sauvegarde : /home/linuxtricks/sauvegarde-script.sh
Le dossier du site : /home/linuxtricks/public_html
Et pour finir, on fait une crontab qui automatise la sauvegarde périodiquement (ici, tous les jours à 00h01) :
Pour plus de sécurité, on peut se permettre de récupérer sur un autre serveur les sauvegardes via la commande :
Utiliser cette commande si on a changé le port de SSH :
Introduction
Quand on a un site, ce qui est bien, c'est de le sauvegarder. Voici ci-dessous le script que je lance à la main lorsque je souhaite le sauvegarder.
C'est le script de linuxtricks. Adapter avec les noms que vous voulez
Etat des lieux
Le dossier personnel : /home/linuxtricks
Le dossier de sauvegarde : /home/linuxtricks/sauvegarde
Le script de sauvegarde : /home/linuxtricks/sauvegarde-script.sh
Le dossier du site : /home/linuxtricks/public_html
Le script
Code BASH :
#! /bin/bash echo On definit les variables systeme path=`dirname $0` pathsav="$path/sauvegarde" site="www.linuxtricks.fr" wwwpath="/home/linuxtricks/" wwwfolder="public_html" dbhost="localhost" dbuser="linuxtricks" dbpasswd="linuxtricks" dbname="linuxtricks" dbrestohost="$dbhost" dbrestouser="$dbuser" dbrestopasswd="$dbpasswd" dbrestoname="ltrestore" echo Variables definies. echo "" echo Vérification des programmes progtar=$(which tar) progtar=$(echo $?) progbzip2=$(which bzip2) progbzip2=$(echo $?) progbzcat=$(which bzcat) progbzcat=$(echo $?) progmysqdump=$(which mysqldump) progmysqdump=$(echo $?) progmysql=$(which mysql) progmysql=$(echo $?) if [ $progtar -eq 0 ] && [ $progbzip2 -eq 0 ] && [ $progbzcat -eq 0 ] && [ $progmysqdump -eq 0 ] && [ $progmysql -eq 0 ] then echo Tous les programmes sont disponibles sur le serveur else echo Il manque un programme pour faire fonctionner le script de sauvegarde. Vérifier la présence de tar, bzip2, bzcat, mysqldump et mysql exit 1 fi echo Vérification des programmes terminés echo "" echo Iniatalisation du script cd "$path" mkdir "$pathsav" 2>/dev/null echo Script initialise echo "" echo On definit la date de sauvegarde dte=$(date +%Y-%m-%d--%H-%M-%S) echo Date de sauvegarde definie sur $dte echo "" echo On lance la sauvegarde echo "" echo On lance l\'archivage du site web $site cd "$wwwpath" tar cf "$pathsav/$site-$dte.tar" "$wwwfolder" cd "$path" if [ $? -eq 0 ] then echo Archivage du site Web termine : "$pathsav/$site-$dte.tar" else echo Echec de l\'archivage du site Web exit 2 fi echo "" echo On compresse l\'archive du site web $site bzip2 -z "$pathsav/$site-$dte.tar" if [ $? -eq 0 ] then echo Compression de l\'archive du site Web termine : "$pathsav/$site-$dte.tar.bz2" else echo Echec de la compression de l\'archivage du site Web exit 3 fi echo "" echo On lance la sauvegarde de la base de donnees mysqldump -u "$dbuser" -p"$dbpasswd" -h "$dbhost" "$dbname" > "$pathsav/$site-$dte.sql" if [ $? -eq 0 ] then echo Base de donnees sauvegardee. else echo Echec de la sauvegarde de la base de données exit 4 fi echo "" echo On compresse la base de données. bzip2 -z "$pathsav/$site-$dte.sql" if [ $? -eq 0 ] then echo Base de donnees compressée. else echo Echec de la compression de la base de données exit 5 fi echo "" echo SAUVEGARDE TERMINEE echo --------------------- echo PURGE DES ANCIENNES SAUVEGARDES find "$pathsav" -mtime +30 -exec echo '{}' \; find "$pathsav" -mtime +30 -exec rm '{}' \; if [ $? -eq 0 ] then echo Anciennes sauvegardes supprimées. else echo Echec de la suppression des anciennes sauvegardes. exit 6 fi echo -------------------- echo VERIFICATION DE LA SAUVEGARDE echo On verifie l\'archive "$pathsav/$site-$dte.tar.bz2" tar tf "$pathsav/$site-$dte.tar.bz2" 2>/dev/null 1>/dev/null if [ $? -eq 0 ] then echo Sauvegarde des fichiers du site : OK else echo Une erreur est survenue durant la restauration. La sauvegarde est probablement endommagee. fi echo "" echo On verifie la sauvegarde de la base de donnees : "$pathsav/$site-$dte.sql.bz2" bzcat "$pathsav/$site-$dte.sql.bz2" | mysql -u "$dbrestouser" -p"$dbrestopasswd" -h "$dbrestohost" $dbrestoname if [ $? -eq 0 ] then echo Sauvegarde de la base de donnees : OK else echo Une erreur est survenue durant la restauration. La sauvegarde est probablement endommagee. fi echo TESTS DE RESTAURATION TERMINES
Le Crontab
Et pour finir, on fait une crontab qui automatise la sauvegarde périodiquement (ici, tous les jours à 00h01) :
Code BASH :
01 00 * * * /home/linuxtricks/sauvegarde-script.sh
Récupérer les sauvegardes ailleurs
Pour plus de sécurité, on peut se permettre de récupérer sur un autre serveur les sauvegardes via la commande :
Code BASH :
cd /le/dossier.voulu/ rsync -rvzh linuxtricks@linuxtricks.fr:/home/linuxtricks/sauvegarde* .
Utiliser cette commande si on a changé le port de SSH :
Code BASH :
cd /le/dossier.voulu/ rsync -rvzh -e 'ssh -p 2222' linuxtricks@linuxtricks.fr:/home/linuxtricks/sauvegarde* .