Rsync
Rsync
Présentation
Rsync est un programme de synchronisation de fichiers.
La synchronisation avec Rsync est unidirectionnelle, c'est-à-dire qu'elle copie les fichiers de la source en direction de la destination. Rsync est donc utilisé pour réaliser des sauvegardes incrémentales ou pour mettre en place des sauvegardes locales ou distantes.
Il existe de nombreuses interfaces graphiques pour utiliser Rsync (LuckyBackup, Gadmin-Rsync, Grsync, GtkRsync...)
Utilisation
La commande de base
rsync répertoire_source/ répertoire_de_destination/
Il utilise aussi bien le réseau
rsync -a répertoire_source/ login@serveur.org:/répertoire_de_destination/
Les options sont innombrables, et le man très fourni... Voici l’exemple d'une commande plus complexe passée avec Rsync:
rsync -Haurov --stats --delete --backup --backup-dir=/répertoire_de_destination/exclus/ --exclude=/répertoire_source/exlus/** root@labas:/répertoire_source/ /répertoire_de_destination/miroir/
Explication...
- Sauvegarde de /répertoire_source sauf /répertoire_source/exlus vers la machine 'labas' dans /répertoire_de_destination/miroir/
- Effacement sur la cible des fichiers qui ne sont plus présents sur la source, mais sauvegarde préalable de ces fichiers dans /répertoire_de_destination/exclus/
- -Haurov Diverses options dont (liens en dur, récursif, mise à jour seulement, incrémental, verbeux, et en conservant les droits)
- --stats et avec des statistiques de l'opération SVP...
Subtilité des chemins
Contrairement à ce que l'on pourrait penser, les deux commandes suivantes ne sont pas équivalentes et ne donnent pas le même résultat
rsync répertoire_source/ répertoire_de_destination/ rsync répertoire_source répertoire_de_destination/
L'absence du "/" a son importance,
- Sans, rsync recopie le contenue et le répertoire
- Avec, rsync ne recopie que le contenue du répertoire
Les deux commandes suivantes sont équivalentes
rsync répertoire_source/ répertoire_de_destination/répertoire_source/ rsync répertoire_source répertoire_de_destination/
Par contre pour le répertoire cible le "/" final n'a pas d'importance, le résultat sera identique pour les deux lignes suivantes
rsync répertoire_source/ répertoire_de_destination/ rsync répertoire_source/ répertoire_de_destination
Exemple d'utilisation de rsync
- Sauvegarde et clonage d'un système
- Rsync + NFS (Sauvegarde différentielle journalière)
- Script de double sauvegarde alternée
Utilisation en tant que service
Il peut être intéressant de configurer un serveur de sauvegarde avec le mode service de Rsync. Cela permet à l'administrateur de mieux maitriser les réplications et aux utilisateurs de simplifier leurs lignes de commande. IMPORTANT il faut que le port 873/tcp soit ouvert dans votre par-feu sur le serveur.
Coté serveur
Il faut aller éditer le fichier de configuration /etc/default/rsync en modifiant les paramètres suivants:
RSYNC_ENABLE=true RSYNC_CONFIG_FILE=/etc/rsyncd.conf
!!! Valable que pour les système d'init «init.d» pour systemd il faut copier «/lib/systemd/system/rsync.service» vers «/etc/systemd/system/rsync.service» et modifier la ligne de commande qui va bien.
Le reste du fichier comporte assez de commentaire pour comprendre les autres possibilités. Il faut ensuite créer le fichier /etc/rsyncd.conf et le remplir plus ou moins. Si vous voulez faire simple il suffit de faire :
[sauvegardes] #Nom du module path = /srv/intern # Chemin vers le répertoire de synchronisat comment = Synchro fichiers internes # Commentaire sur le module read only = false # Par défaut a "true" [sauvegardes2] path = /srv/extern comment = Synchro fichiers externes read only = false # Par défaut a "true"
Si on veut faire un peu plus compliqué (voir le man de rsyncd.conf pour encore plus d'options) :
uid = nobody # Le nom utilisateur ou le numéro lié à l'utilisateur ; définit les permissions liées aux fichiers gid = nogroup # Le groupe lié à l'utilisateur ; définit les permissions liées aux fichiers. use chroot = yes # Emprisonne les chemins spécifiés dans la variable path motd file = motd.txt # Permet de spécifier un «message du jour» (message of the day) à afficher aux clients à chaque connexion max connections = 4 # Spécifie le nombre de connexions simultanées autorisées. socket options = SO_KEEPALIVE # Permet de fixer toutes sortes d'options de socket qui pourraient accélérer les transferts (ou les ralentir!) log file = /var/log/rsycnd.log # Nom du fichier de log à utiliser syslog facility = local5 # Permet de spécifier un nom de facilité (facility) syslog pid file = /var/run/rsyncd.pid # Spécifie le nom du fichier dans lequel est enregistré le numéro du processus lié à rsync [debian] path = /srv/debian/mirror comment = L'archive Debian (~250 Go) auth users = compte_autorisé1,compte_autorisé2,compte_autoriséN # Nom des utilisateurs accrédités à accéder au module read only = true secrets file = /etc/rsyncd/debian.secrets # Nom du fichier contenant la correspondance identifiant/mot de passe hosts allow = 192.168.47.200 10.0.0.3/8 # Une liste d'hôte ayant le droit de se connecter !
- Concernant le uid/gid il est tout a fait possible de créer un utilisateur rsync pour mieux isoler les répertoires cibles.
- Concernant le fichier d'authentification il est de la forme suivante :
compte_autorisé1:un_mot_de_passe compte_autorisé2:autre_mot_de_passe compte_autoriséN:_mot_de_passe
Voilà une dernière petite commande pour lancer le service et c'est bon
service rsyncd start
Coté client
Seule la partie cible ou source des commandes rsync change
- Synchronisation de votre station vers le serveur rsync
rsync -a répertoire_source/ adresse_ip_ou_nom_du_serveur_rsync::nom_du_module
- Synchronisation du serveur rsync vers votre station
rsync -a adresse_ip_ou_nom_du_serveur_rsync::nom_du_module répertoire_destination/
Liens externes
- (en) Site officiel
- (fr) Doc Debian
- (fr) Doc Ubuntu
- (fr) Manpage
Lol 11 août 2011 à 08:10 (CDT)