BASH - Sauvegarder son site et sa base de données

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières
  1. Introduction
  2. Le script
  3. Le Crontab

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

Je l'ai conçu de A à Z, il se peut donc qu'il ne soit pas parfait :merci:

Les variables ont été changées pour ne pas afficher mes identifiants :intello:


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