Accueil > Boîtes à outils > Tutoriels > Vos sites web > Sauvegarder son site

Sauvegarder son 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 $ORGPATH

Le 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

Par Frédéric, le 24 mars 2003 sur Ouvaton, les amis