27.6. Introduction à rsync

rsync est utile lorsque de grandes quantités de données doivent être transmises régulièrement sans grand changement. Par exemple, cela arrive souvent lors de la création de sauvegardes. Une autre application concerne la mise en attente de serveurs. Il s'agit de serveurs qui stockent des arborescences complètes de répertoires de serveurs Web régulièrement mis en miroir sur un serveur Web d'une zone démilitarisée.

27.6.1. Configuration et fonctionnement

rsync peut fonctionner selon deux modes différents. Il peut être utilisé pour archiver ou pour copier des données. Pour ce faire, seul un shell distant, tel que ssh, est nécessaire sur le système cible. Il est toutefois possible d'utiliser rsync comme démon pour fournir des répertoires au réseau.

Le mode de fonctionnement de base de rsync ne nécessite aucune configuration spéciale. rsync permet directement la mise en miroir de répertoires complets sur un autre système. À titre d'exemple, la commande suivante crée une sauvegarde du répertoire personnel de tux sur un serveur de sauvegarde nommé sun :

 rsync -baz -e ssh /home/tux/ tux@sun:backup
 

La commande suivante sert à lire le répertoire :

 rsync -az -e ssh tux@sun:backup /home/tux/
 

Jusqu'ici, la gestion diffère peu de celle d'un outil de copie ordinaire, tel que scp.

rsync doit fonctionner en mode « rsync » pour que toutes ses fonctions soient disponibles. Cela s'effectue par le démarrage du démon rsyncd sur l'un des systèmes. Configurez-le dans le fichier /etc/rsyncd.conf. Par exemple, pour que le répertoire /srv/ftp soit disponible avec rsync, utilisez la configuration suivante :

gid = nobody
uid = nobody
read only = true
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log

[FTP]
        path = /srv/ftp
        comment = An Example
 

Démarrez ensuite rsyncd avec rcrsyncd start. rsyncd peut également être démarré automatiquement au cours du processus d'amorçage. Configurez cela en activant ce service dans l'éditeur de niveau d'exécution de YaST ou en entrant manuellement la commande insserv rsyncd. rsyncd peut aussi être démarré par xinetd. Toutefois, cela n'est recommandé que pour les serveurs qui utilisent rarement rsyncd.

Cet exemple crée également un fichier journal qui répertorie toutes les connexions. Ce fichier est stocké dans /var/log/rsyncd.log.

Il est ensuite possible de tester le transfert à partir d'un système client. Faites-le à l'aide de la commande suivante :

rsync -avz sun::FTP
 

Cette commande répertorie tous les fichiers présents dans le répertoire /srv/ftp du serveur. Cette requête apparaît également dans le fichier journal /var/log/rsyncd.log. Pour démarrer vraiment un transfert, indiquez un répertoire cible. Utilisez . pour le répertoire en cours. Par exemple :

rsync -avz sun::FTP .
 

Par défaut, aucun fichier n'est supprimé lors de la synchronisation avec rsync. Si cela doit être forcé, l'option supplémentaire --delete doit être indiquée. Pour être sûr qu'aucun fichier plus récent n'est supprimé, il est possible d'utiliser l'option --update à la place. Les conflits qui se présentent doivent être résolus manuellement.

27.6.2. Pour plus d'informations

Des informations importantes concernant rsync sont fournies dans les pages de manuel man rsync et man rsyncd.conf. Une référence technique concernant les principes de fonctionnement de rsync est présentée dans /usr/share/doc/packages/rsync/tech_report.ps. Vous trouverez les dernières informations concernant rsync sur le site Web du projet à l'adresse http://rsync.samba.org/.