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é.
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
#!/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