Sauvegarde d'un site Web

Avant propos

Le but de l'opération est de réaliser une archives régulière (dump) d'un site Web.

Nous partons du principe que nous avons un accès en ssh sur un serveur tournant sous Linux.

Dans cette exemple, il s'agit d'un site Intranet, mais un site Web “externe” utilisera exactement le même procédé.

Cahier des charges

  • Le site Web se trouve dans le répertoire /home/www/
  • Les fichiers à sauvegarder seront dans /home/www/.sauve/www/
  • Seuls les répertoires visible devront être archivés.

Remarque :
Le lancement du script est assuré automatiquement par une commande cron, lancée chaque mois à 0h00 :

[root@servLin2 ~]# crontab -l
# m h  dom mon dow   command
# Sauvegarde du site /home/www/ chaque début de mois (edit: 06/08/2007)
0 0 1 * *      /home/www/.sauve/dump_www.sh /dev/null 2>&1

Script

#!/bin/sh
# dump_mysql.sh
# Auteur : Janusz <janusz@ledruide.net>
# dates :
#   rev 0 - 06/08/2007
# 
 
# Archivage d'un site Web
# 
# Données
repSource=/home/www/
repCible=/home/www/.sauve/www/
aujourdhuiDate=$(date +%Y-%m-%d)
listArchives=`cd ${repSource}; ls -d */`
FichierArchive=dump_www_${aujourdhuiDate}.tar.gz
 
clear
cd ${repSource}
 
# Sauvegarde dans le repertoire $repCible
if [ ! -f ${repCible}${FichierArchive} ] ; then
 
    echo "Sauvegarde des données du répertoire ${repSource}"
    echo "dans le fichier : ${repCible}$FichierArchive"
    tar czf ${repCible}${FichierArchive} $listArchives
    echo "..."
    echo "Sauvegarde effectuée."
 
    # On remet les droits par défaut
    chown apache:apache -Rf ${repCible}../../
    chmod 775 -Rf ${repCible}../../
else
 
    echo "Le fichier ${repCible}$FichierArchive existe déjà !"
    echo "La sauvegarde a échouée."
 
fi