Rsync

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

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

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

Lol 11 août 2011 à 08:10 (CDT)