C’est bien beau de modifier les fichiers sur son PC, même si on a parfois la précaution de faire une sauvegarde sur un disque externe, c’est souvent en dilettante (tiens j’ai 1/4 heure devant moi, allez hop je branche mon disque externe et je sauvegarde…) malheureusement on a besoin de récupérer la version précédente du fichier que l’on vient de modifier, et la petite sauvegarde risque de ne pas être très utile car obsolète, et non différentielle (on n’y stocke souvent qu’une seule version d’un fichier).
Donc la sauvegarde incrémentale devient la solution idéale, elle permet de remonter dans le temps et ainsi retrouver tout l’historique d’un fichier pour chacune de ses sauvegardes, tout en limitant l’utilisation de l’espace nécessaire à cette sauvegarde.
A moins d’avoir un Mac (navré j’ai une dent pour leur business model) qui dispose de son utilitaire TimeMachine, comment peut on faire simple sous votre distrib Linux préférée.
rsync is watching you
rsync, le formidable outil en ligne de commande pour synchroniser des répertoires, va nous permettre de faire une TimeMachine avec 3 lignes, à mettre dans un script bash :
date=`date "+%Y%m%d%H%M%S"`
# partition des données à sauvegarder
montage=/media/donnees
# partition hébergeant la sauvegarde
timemachine=/media/bigdisk/Backups
# synchronisation
rsync -vzaP --link-dest=$timemachine/current $montage/Mes\ documents $timemachine/back-$date
# suppression du lien
rm -f $racine/current
# creation du lien qui servira pour la prochaine synchro
ln -s back-$date $racine/current
A sa première exécution, le répertoire current n’existant pas, tous les fichiers y sont donc copiés (=c’est une sauvegarde complète qui peut donc être assez longue), à l’issue en allant faire un tour dans le répertoire du 1er Novembre:
[centos /media/bigdisk/Backups/back-20111101073347/Mes documents]# ls -rtl
-rwxrwx--- 1 usr grp 190976 nov 1 7:34 engel-leben-2011.xls
Après avoir modifié notre fichier sur notre répertoire de travail, on relance notre script, un nouveau répertoire back- est créé et n’y sont copiés que les fichiers modifiés/supprimés par rapport à current, c’est une sauvegarde différentielle.
A présent dans le répertoire du 4 Novembre, notre fichier est plus récent (=rsync a copié la nouvelle version du fichier), enjoy :
[centos /media/bigdisk/Backups/back-20111104201350/Mes documents]# ls -rtl
-rwxrwx--- 1 usr grp 191260 nov 4 18:17 engel-leben-2011.xls
Reste donc à planifier notre petit script dans cronTab et se la couler douce.
et Marty remonta le temps!
Donc sur notre volume de sauvegarde on peut accèder à chaque version sauvegardée dans les répertoires back-
Y a plus de place !
A force de ne faire que des sauvegardes différentielles le disque risque d’arriver à saturation, alors il suffira de supprimer l’arborescence sous Backups, et relancer le script qui fera une nouvelle sauvegarde full à destination de current.
Il n’y a pas de bonne sauvegarde sans bonne restauration, avec ce système on remonte aisément le temps comme un jeu d’enfants, on retrouve son fichier et un copier/coller suffit pour le récupérer, enjoy
Bravo et merci pour cet article, ça fait toujours du
bien de lire et de voir des choses comme celles-ci.
On voit tellement de bêtises à droite et à gauche sur
le net, que quand on trouve un billet comme le votre on se doit de le
dire. C’est pourquoi je me suis permis de déposer un commentaire, chose qui n’est pas des mes habitudes, mais là ça valait le coup. Merci et bonne continuation.
Eh bien heureux de vous avoir transmis une information juste, bonne continuation, marc
Sinon il y a aussi l’excellent rsnapshot ( http://www.rsnapshot.org ) qui a deux avantages sur cette méthode : 1) il gère lui même l’expiration des vieilles sauvegardes pour ne pas faire un disk full et péter les nouvelles sauvegardes, et 2) il permet d’économiser énormément d’espace en utilisant des liens hard pour les fichiers qui n’ont pas été modifiés entre différentes sauvegarde. C’est top!
merci pour cette info sur rsnapshot,
rsync prend déjà en compte les anciens fichiers, seuls les nouveaux sont mis à jour,
Marc