Sauvegarde d'un système Debian

On va sauvegarder nos différents éléments dans des archives qui seront stockées dans le répertoire /home/backup. Puis nous pourrons dupliquer ce répertoire sur différents support de sauvegarde (disque optique, disque dur, serveur).

Liste des paquets

Aptitude fournit deux utilitaires dédiés à la sauvegarde de l'état des paquets sur un système : aptitude-create-state-bundle et aptitude-run-state-bundle.

La sauvegarde de la liste des paquets se fait avec la commande :

sudo aptitude-create-state-bundle package_list_backup.bz2

La restauration se fait avec la commande :

sudo aptitude-run-state-bundle package_list_backup.bz2

Base de donnée

Voir l'article détaillé sur la sauvegarde de MySQL.

Site web

Naïvement, on peut penser faire une grosse archive avec le contenu de /var/www. On va essayer de faire un peu plus fin tout en restant simple.

On va définir une liste de répertoire à ne pas sauvegarder, typiquement ce seront les répertoires contenant du cache. Au niveau de la compression, on va utiliser l'algorithme XZ (option J) pour gagner de l'espace.

cd /var/www && tar cJ --exclude-vcs --exclude-backups \
 --exclude=guim.info/www/braldahim/cache/* \
 -f /home/backup/www/var_www.tar.xz *

On fait également appel à logrotate afin de conserver une dizaine d'archives.

/home/backup/www/var_www.tar.xz {
    daily
    rotate 10
    missingok
    dateext
}

Dépôt de code

Pour subversion, je propose de faire un dump complet des dépôts afin d'aller au plus simple (voir la doc sur le sujet).

BUDIR=/home/backup

SVNTMP=$BUDIR/svn/tmp
[ -d "$SVNTMP" ] || mkdir -p $SVNTMP
rm -rf $SVNTMP/*
cd $SVNTMP
svnadmin hotcopy /home/svn/mathieu/public $SVNTMP/mathieu_public
tar cJf ../mathieu_public.tar.xz mathieu_public

On fait également appel à logrotate :

/home/backup/svn/mathieu_public.tar.xz {
    daily
    rotate 10
    missingok
    dateext
}