Mots-clés :
Sauvegarder son site
vendredi 12 août 2005, par
Attention, ce tutoriel s’adresse aux personnes ayant un PC qui tourne sous Linux. L’exemple s’appuie sur un site sous SPIP, mais peut fonctionner pour n’importe quel site.
J’utilise le script ci-après sur mon poste linux à la maison pour sauvegarder régulièrement et intégralement mon site.
Il fonctionne chez OUVATON bien sûr mais également chez d’autres hébergeurs (il suffit juste de modifier les paramètres).
Les prérequis sont :
- Linux
- lftp
- curl
- bzip2 (sinon modifier le script pour utiliser gzip)
Le script sauvegarde, sous le répertoire défini, 2 fichiers à chaque fois : l’un qui contient les fichiers du site (récupérés par FTP), l’autre les données de la base de données.
De plus, le script conserve, dans le sous répertoire "mirror", une copie du site web (afin de ne télécharger que les fichiers modifiés depuis la dernière sauvegarde pour des raisons de temps et de bande passante). Il ne faut surtout pas toucher au contenu du répertoire mirror (en cas de doute, l’effacer complètement mais la sauvegarde suivante sera plus longue).
Notez que le script ne sauvegarde pas les répertoires /CACHE/ du site web. Ceci concerne SPIP car il est inutile de sauvegarder ces données là.
#!/bin/bash
#
# WebBackup.sh
# Version : 1.0
# Auteur : Frederic PLE (fple <a> free.fr)
#
# Historique
# 23/03/2003 : Version 1.0
#
# Le script est librement utilisable.
# N'oublier pas de faire profiter aux autres des modifications que vous y porteriez
DATENOW=`date '+%Y%m%d'`
# MYAPTH : repertoire (local) dans lequel seront stockées les sauvegardes
MYPATH=/home/fred/wwstri.bak/
# MYSITE : nom du site web
MYSITE=wwstri.org
if [ $# -ne 0 ] ; then
MYSITE=$1
fi
# Paramètres FTP
FTPHOST=ftp.ouvaton.org
FTPUSER=freduser
FTPPWD=xxxxx
# Parametres MySQL
PHPMYADMIN="https://ssl.ouvaton.coop/panel/phpMyAdmin"
DBUSER=freddb
DBPWD=xxxxxxxx
# Liste des tables a sauvegarder (ex: les tables de SPIP)
DBTABLE=('spip_articles' 'spip_auteurs' 'spip_auteurs_articles' 'spip_auteurs_messages' 'spip_auteurs_rubriques' 'spip_breves' 'spip_documents' 'spip_documents_articles' 'spip_documents_breves' 'spip_documents_rubriques' 'spip_forum' 'spip_forum_cache' 'spip_groupes_mots' 'spip_index_articles' 'spip_index_auteurs' 'spip_index_breves' 'spip_index_dico' 'spip_index_mots' 'spip_index_rubriques' 'spip_index_syndic' 'spip_messages' 'spip_meta' 'spip_mots' 'spip_mots_articles' 'spip_mots_breves' 'spip_mots_forum' 'spip_mots_rubriques' 'spip_mots_syndic' 'spip_petitions' 'spip_referers' 'spip_referers_articles' 'spip_referers_temp' 'spip_rubriques' 'spip_signatures' 'spip_syndic' 'spip_syndic_articles' 'spip_types_documents' 'spip_visites' 'spip_visites_articles' 'spip_visites_temp')
# Debut du script
HTTPAUTH=`echo -n "$DBUSER:$DBPWD" | uuencode -m /dev/null | head -2 | tail -1`
TABPARAM=""
for table in ${DBTABLE[*]}
do
TABPARAM="$TABPARAM -d 'table_select%5B%5D=$table'"
done
$ORGPATH=`pwd`
cd $MYPATH
if [ ! -d mirror ] ; then
mkdir mirror
fi
curl -H "Authorization: Basic $HTTPAUTH" \
$TABPARAM \
-d 'what=data' -d 'drop=1' -d 'showcolomns=yes' -d 'extended_ins=yes' -d'use_backquotes=1' -d 'asfile=sendit' -d 'bzip=bzip' -d 'server=1' -d 'lang=fr-iso-8859-1' -d 'db=wwstri' \
-o $MYSITE.$DATENOW.db.bz2 \
"$PHPMYADMIN/tbl_dump.php"
cd mirror
lftp -u $FTPUSER,$FTPPWD -e "mirror -x CACHE/ -n -e ; quit" $FTPHOST
tar cvf ../$MYSITE.$DATENOW.site.tar ./*
cd ..
bzip2 -9 $MYSITE.$DATENOW.site.tar
cd $ORGPATHLe script peut être lancé automatiquement par cron en le paramétrant comme ceci par exemple (sauvegarde quotidienne à 06 :15) :
15 6 * * * /home/fred/webbackup.sh >/dev/null 2>&1 P.-S.
Par Frédéric, le 24 mars 2003 sur Ouvaton, les amis