Entre sauvegarde et gestion de version
Par Pierrick, jeudi 9 juin 2005 à 22:27 / categorie: GNU/linux / tags: GNU/Linux, sysadmin / #29 / rss
Récemment, j'exposais la technique (enfin, je disais que j'employais en pointant vers les articles traitant du sujet) de sauvegarde incrémentales avec rsync. Mon ami Joseph, cherchant également un bon moyen de sauvegarder ses données, a constructivement critiqué la méthode et en propose une autre : entre sauvegarde et gestion de version.
Critique de la méthode sauvegardes incrémentales avec rsync
Je cite directement Joseph, j'ai son accord :
Dans le système que ton lien propose, si tu effaces un fichier et tu t'en rends compte au bout de plus de 8 jours, tu l'as dans le baba... Si par exemple tu n'emploies pas ton système pendant 8 jours, alors tu n'as aucune sauvegarde autre que la version courante. (Il me semble préférable d'avoir 8 versions différentes du fichier que d'avoir les versions du fichier des 8 derniers jours, sachant qu'elles peuvent être identiques...)
Je ne peux pas faire autrement qu'approuver cette critique.
Si les sauvegardes se font à intervalles irréguliers, les répertoires backup.1 backup.2 correspondront des dates aléatoires, et il faudra se renseigner d'une façon ou d'une autre (historique des lancements ou date du répertoire ?) pour savoir à quand elles remontent.
Ma solution consiste à inclure la date dans nom du fichier de log correspondant à la sauvegarde : /var/log/backup/make_snapshot-CCYYMMDDHHmmss.log. (On ne peut pas vraiment parler de solution idéale...)
Méthode entre sauvegarde et gestion de version
Dans l'idée que pour chaque fichier, il vaut mieux avoir les 8 dernières versions que les 8 derniers snapshots, Joseph propose d'utiliser mirrordir et l'option -N :
mirrordir -N 8 -b '.ORIG-%d' /home /backup/home
Les explications, en images lignes de commande :
$ cd temp $ mkdir source save $ for num in $(seq 1 10) do echo version $num > source/README sleep 1 mirrordir -v -N 3 -b '.ORIG-%d' source save done $ find . ./source ./source/README ./save ./save/README ./save/README.ORIG-1 ./save/README.ORIG-2 ./save/README.ORIG-3 $ cat ./save/README.ORIG-1 version 9
Et là, vous vous dites que c'est fantastique (si si, vous vous dites vraiment que c'est fantastique). Quelque soit l'intervalle de temps entre 2 sauvegardes, il va garder les -N dernières versions de chaque fichiers. L'important devient donc les changements qui surviennent sur un fichier au cours de sa vie et non plus la fréquence de sauvegarde.
Je pense que tout le monde se trouve dans le même cas : la majorité des fichiers sont très peu mis à jour alors qu'une minorité est mise à jour fréquemment. La méthode optimise le nombre de fichiers sur disque (de hardlinks en tout cas) tout en étant capable de sauvegarder de vieilles versions de vos fichiers.
Si un jour votre sauvegarde devient utile, pour restaurer votre /home il suffira de récupérer /backup/home et de supprimer tous les fichiers *.ORIG-?.
L'option -O permet de ne garder les anciennes versions que si elles sont plus récentes qu'un seuil fixé. Par exemple mirrordir -v -N 3 -b '.ORIG-%d' -O 2592000 source save ne conservera que les versions des 30 derniers jours (2,592,000 secondes équivaut à 30 jours).
Merci à Joseph pour cette méthode :-)
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.