Yann Moisan

Scala, Web, Linux…

Sauvegarde

Nos données sont précieuses. La sauvegarde est donc un sujet critique, qu'il faut maitriser parfaitement. Je fuis donc les applications graphiques qui masquent certaines choses. La sauvegarde doit s'effectuer automatiquement, le plus rapidement possible et en conservant si possible un historique des dernières versions.

Je sauvegarde sur un disque USB externe. La vitesse d'upload, limité à 100k, ne permettant pas de réaliser confortablement des sauvegardes en ligne.

L'outil de prédilection est rsync, disponible sur la plupart des distributions Linux. C'est un outil de sauvegarde incrémentale, rapide, avec une syntaxe très simple : rsync options source dest.

Mais rsync dispose aussi de nombreuses options.

Sauvegarde différentielle

Le principe est de ne stocker que la différence avec la sauvegarde précédente.

Commençons par mettre les mains dans le cambouis pour se familiariser avec l'outil :

mkdir rsynctest
cd rsynctest
mkdir {src,dst,bkp}
echo a > src/a
echo b > src/b
rsync -a --delete -b --backup-dir=/home/yamo/rsynctest/bkp ~/rsynctest/src/ ~/rsynctest/dst
ll -R
rm src/b
echo a >> src/a
rsync -a --delete -b --backup-dir=/home/yamo/rsynctest/bkp ~/rsynctest/src/ ~/rsynctest/dst
ll -R
cat bkp/*
cat dst/*
  • L'option --backup-dir ne supporte pas le ~
  • L'option -a, comme archive, pour préserver la plupart des caractéristiques des fichiers.
  • L'option --delete permet de supprimer un fichier de la destination quand il est supprimé de la source
  • L'option -b permet de garder un historique
  • A savoir : le / à la fin de la source est important, il indique de copier le contenu du répertoire.
  • A savoir : les liens symboliques sont préservés mais pas les liens matériel

Avec ce système, il est possible d'avoir un répertoire backup par jour de la semaine. Le problème est que la restauration n'est pas immédiate : il faut rejouer la sauvegarde complète puis les sauvegardes différentielles.

Sauvegarde incrémentielle de type snapshot

C'est la Rolls-Royce de la sauvegarde. C'est une sauvegarde incrémentielle et qui apparait comme un snapshot (c.-à-d. chaque sauvegarde semble complète) Ainsi, il suffit juste de recopier le répertoire pour restaurer. Le secret réside dans l'utilisation de l'option --link-dest et une rotation des répertoires.

rsync -av --delete --link-dest=$destdir/backup.1 $element $destdir/backup.0

Le script complet est sur GitHub

Source :