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
}