tutoriel sur Rsync par Richard DEMONGEOT


tutoriel sur Rsync

Introduction

Rsync est un outil qui permet de faire une sauvegarde (à distance) d'une arborescence particulière. Il s'agit d'un logiciel libre, donc la mise en place de ce système est peu coûteuse, par exemple au sein même de l'entreprise, le cout seras d'une machine supplémentaire, et un câble réseau entre les deux.
Il permet aussi de passer par dessus une couche SSH afin de sécuriser les données transmises. Dans notre exemple, nous allons commencer par une sauvegarde d'un répertoire vers un autre, puis petit a petit augmenter la difficulté pour arriver a une sauvegarde automatique qui génère un log, et qui passe par un tunnel ssh, mais pas sur le port par défaut.

Définition des noms des machines

La machine à sauvegarder (serveur officiel) sera appelée Master.
La machine qui sauvegarde (serveur secondaire) sera appelée Slave.
Il est important de noter que j'ai choisi les noms en fonction de la notion serveur officiel et serveur de secours. En effet, le serveur Slave, en cas de panne du serveur Master, peut prendre sa place afin d'assurer le service. Il sera ensuite nécessaire de changer les configurations afin que le Maitre récupère toutes les données.

Fonctionnement de base

Rsync fonctionne par copie partielle (sauvegarde incrémentielle) des données. En effet, il ne recopie que ce qui a changé depuis la dernière sauvegarde (nouveautés ou modifications). Le début du transfert commence donc par l'envoi de la liste des fichiers avec plusieurs informations relatives à celui-ci, puis les données en elles mêmes.
Le "chef" de cet orchestre est le serveur Slave, c'est lui qui va demander à l'autre serveur la liste des données et qui ensuite va demander les données qu'il veut pour mettre a jour son mirroir.

Installation

Sur le serveur Master, il faut installer rsync en mode démon (toujours en attente de connexion)
Sur le serveur Slave, juste installer rsync, qui par défaut est en mode client.

Copie simple d'un dossier à un autre

Prenons l'exemple d'un backup sur disque USB.

rsync -Harov /home/ /mnt/

Hmm maintenant, il faudrait pouvoir faire de l'incrementiel, et non tout recopier a chaque fois :). Il suffit de rajouter un u :).

rsync -Haurov /home/ /mnt/

C'est bien beau tout cela, mais ... lorsque nous supprimons quelque chose dans le /home, cela n'est pas répercuté dans le backup.

rsync -Haurov --delete /home/ /mnt/

OK, mais ... avant de supprimer, nous devrions peut être le backuper, au cas ou la suppression soit une erreur (humaine :) ).

rsync -Haurov --delete --backup --backup-dir=/mnt/deleted/ /home/ /mnt/mirror/

Bon OK, OK ... Mais .... mon boss aime bien les statistiques, je fais comment?

rsync -Haurov --stats --delete --backup --backup-dir=/mnt/deleted/ /home/ /mnt/mirror/

Bon OK, mais j'ai un dossier que je ne veut pas backuper. Comment fait on docteur?
Et bien on rajoute --exclude=/home/toto/** pour exclude toto :).
Ahh, c'est très bien, mais nous sommes toujours dépendants d'une machine unique :).Le but était de sauvegarder un serveur sur un autre.
Là, nous allons utliser le serveur rsync.

Sur le serveur esclave :
rsync -Haurov --stats --delete --backup --backup-dir=/mnt/deleted/ --exclude=/home/toto/** root@Maitre:/home/ /mnt/mirror/
Cela nécessite bien sûr une authorisation de connexion root en SSH. Vous pouvez utiliser n'importe quel utilisateur bien sûr.
OK, mais moi j'ai un port SSH déporté, je fait comment?
Dans ce cas, il suffit de forcer le système de connexion à distance : -e "ssh -p port" en plus dans les arguments.

Pour utiliser rsync avec une clef SSH, je vous invite à lire la fin de mon article OpenSSH.

Merci à Loup Vaillant pour la relecture.