RSYNC – Sauvegardes complètes et incrémentielles

Introduction

rsync est un logiciel (libre) qui permet la synchronisation de fichiers (de manière unidirectionnelle) ; il est très souvent utilisé pour la réalisation de sauvegardes.

À cet effet, on va voir aujourd’hui comment faire des sauvegardes complètes et incrémentielles avec cet outil sous Linux.

Dans les exemples qui suivent, je vais utiliser 2 serveurs (Debian) :

Nom IP
srv-1 192.168.0.10
srv-filer 192.168.0.20

Le but va être de sauvegardé les données de « srv-1 » vers « srv-filer » ; les commandes rsync s’effectueront depuis le serveur srv-filer.

La syntaxe de rsync reste relativement simple, et se présente comme suit :


SSH

Par défaut, rsync utilise SSH. Ce qui veut dire que pour chaque commande rsync, un mot de passe vous sera demandé. Puisque les sauvegardes sont habituellement automatisées, ce n’est pas l’idéal.

Il faut donc en amont générer une paire de clés pour SSH puis faire la propagation sur le serveur distant afin de pouvoir s’authentifier sans mot de passe (authorized_keys).

On génère donc la paire de clés :

Puis on lance la copie sur le serveur distant (ici srv-1) :

On peut désormais se connecter en SSH depuis srv-filer vers srv-1 sans mot de passe.


Sauvegarde complète

Si on souhaite faire une sauvegarde complète de srv-1 vers le répertoire « /backups/srv-1/ » sur srv-filer :

Concernant les options utilisées :

  • -a : mode archive, pour tout préserver au niveau des fichiers (horodatages, permissions, etc…)
  • -v : augmente la verbosité
  • -H : conserve les liens
  • -P (ou –progress) : affiche des informations concernant la progression des transferts
  • –exclude : exclue les répertoires mentionnés dans la sauvegarde
  • –numeric-ids : ne remplace pas les uid/gid par des noms d’utilisateur/groupe

N’oubliez pas l’option -a qui est la plus importante (identique à -rlptgoD). Selon vos besoins néanmoins, je vous invite à consulter le man rsync (disponible ici également).

Après cette commande, l’ensemble du serveur srv-1 a été sauvegardé :


Sauvegarde incrémentielle

Dans cette partie, je vais entrer plus profondément dans les détails afin d’avoir la meilleure compréhension possible. Je vais notamment minimiser et cibler mes sauvegardes sur un répertoire de test qui sera « /datas » et effectuer différentes manipulations.

Préparation

On commence sur srv-1 par créer 10 fichiers texte dans le répertoire /datas pour nos tests :

On peut ensuite procéder à la sauvegarde complète du répertoire. Repartant de zéro, la commande est la suivante :

Après cette opération, les 10 fichiers textes ont bien été sauvegardés dans le répertoire /backups/srv-1/ sur srv-filer :

Variable d’environnement date

Lorsqu’on va réaliser une sauvegarde incrémentielle, on souhaite que tous les fichiers qui ont été modifiés ou supprimés aillent dans un autre répertoire. Pour faire les choses proprement, et ainsi avoir une arborescence claire dans les dossiers, le mieux est d’avoir des répertoires avec dates (pour s’y retrouver). Pour permettre d’inclure la date dans une commande rsync, on va ajouter une variable d’environnement date.

On édite le fichier /etc/profile et on y ajoute la ligne ci-dessous :

Depuis le terminal, si on fait un echo de la variable, ce dernier nous renvoie donc la date au format adapté :

Commande rsync

On va maintenant ajouter/modifier/supprimer certains fichiers dans le répertoire /datas sur srv-1 :

Puis on lance la sauvegarde incrémentielle grâce à la commande suivante :

Concernant les options ajoutées en comparaison de la sauvegarde complète :

  • -u : mettre à jour uniquement les fichiers modifiés
  • –delete : efface les fichiers qui n’existent pas dans le répertoire source
  • –backup : effectue une sauvegarde des fichiers modifiés/supprimés
  • –backup-dir : précise l’emplacement de sauvegarde des fichiers modifiés/supprimés
  • – $date : la variable d’environnement qui nous permet de créer un dossier à la date du jour

On va maintenant vérifier ce qui s’est passé dans notre répertoire de sauvegarde (même si la verbosité de rsync a dû déjà vous le dire).

Dans le répertoire contenant la sauvegarde complète (/backups/srv-1/) :

On retrouve bien les 2 fichiers créés (0.txt et 00.txt), et le fichier supprimé (test10.txt) n’est plus présent.

Si on regarde dans le répertoire /backups, un dossier old-srv1 a été créé :

Dedans, un répertoire avec la date du jour a aussi été créé (grâce à notre variable $date) :

Pour ce qui est de son contenu :

Comme attendu, les fichiers modifiés (test5.txt et test6.txt) et le fichier supprimé (test10.txt) ont été sauvegardés dans ce répertoire.

Vérification du contenu des fichiers modifiés pour en être sur :


On va refaire un test le lendemain. On modifie les fichiers test1.txt, test2.txt et test3.txt :

Puis on relance la commande rsync pour la sauvegarde incrémentielle :

Côté srv-filer, le dossier à la date du jour a bien été créé :

Et ce dernier comprend bien la sauvegarde des fichiers modifiés :


Automatiser les sauvegardes

Pour automatiser les sauvegardes, on passe simplement par le fichier /etc/crontab.

Si vous avez des doutes quant à la syntaxe, prenez connaissance de l’exemple suivant :

Ainsi, pour une sauvegarde incrémentielle tous les dimanches à 05h00 du matin, on procède comme suit :


Archivage

Pour aller plus loin, si on veut gagner de la place, on peut procéder à un archivage.

La compression des fichiers pourrait s’effectuer de la manière suivante :

On peut par exemple inclure cette compression après la sauvegarde mise dans la crontab (compression + suppression du répertoire) :

Pour décompresser ensuite, on procède comme suit (-C définissant l’endroit d’extraction) :


L’article est terminé, on a pu voir de bout en bout comment gérer ses sauvegardes (complètes et incrémentielles) avec rsync 🙂

Vous aimerez aussi...

2 réponses

  1. Raji Anass dit :

    ce tuto est bien claire..Merci pour l’effort.

  2. redrouge dit :

    Bonsoir,

    C’est une sauvegarde « reverse incremental » et non incrémentielle. https://fr.wikipedia.org/wiki/Sauvegarde_(informatique)#Sauvegarde_reverse_incr%C3%A9mentale

    La restauration n’est pas la même qu’une sauvegarde incrémentielle

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.