47.6. Introduction à rsync

rsync s'impose toujours quand il s'agit de transférer régulièrement de grandes quantités de données qui ne changent pas de façon trop considérable. C'est fréquemment le cas lorsqu'on met en place une sauvegarde par exemple. Un autre domaine d'application est ce que l'on appelle les staging servers (serveurs étape). Il s'agit de serveurs qui contiennent les arborescences complètes de serveurs Web et qui sont mis en miroir régulièrement sur un serveur Web dans une DMZ.

47.6.1. Configuration et utilisation

On peut utiliser rsync dans deux modes différents. D'une part, rsync peut archiver ou copier des fichiers. Pour cela, il suffit de faire appel à un shell distant comme par exemple ssh, sur le système cible. Cependant, rsync peut aussi être utilisé comme un démon pour fournir des répertoires au réseau.

L'utilisation principale de rsync n'exige aucune configuration particulière. Grâce à rsync, il est possible de mettre directement en miroir des répertoires complets sur un autre ordinateur. Par exemple, à l'aide de la commande suivante, on peut placer une sauvegarde du répertoire personnel de tux sur un serveur de sauvegarde sun :

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

Pour restaurer le répertoire, utilisez la commande suivante :

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

Jusqu'ici, l'utilisation se différencie à peine d'un programme normal de copie comme scp.

Afin que rsync puisse exploiter pleinement toutes ses fonctionnalités, il faudra l'utiliser en mode « rsync ». Pour ce faire, le démon rsyncd est démarré sur un des ordinateurs. Dans ce cas, rsync doit être configuré dans le fichier /etc/rsyncd.conf. Si par exemple, il s'agit d'accéder au répertoire /srv/ftp via rsync, il est possible de faire appel au fichier de configuration suivant :

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

Le démon rsyncd doit ensuite être démarré avec rcrsyncd start. Le démon rsyncd peut aussi être démarré automatiquement lors du processus d'amorçage. Pour cela, il faut activer ce service dans l'éditeur de niveau d'exécution de YaST ou saisir manuellement la commande insserv rsyncd. Il est également possible de démarrer rsyncd à partir de xinetd. Toutefois, ce n'est recommandé que pour les serveurs sur lesquels le rsyncd n'est pas trop souvent sollicité.

Dans notre exemple, un fichier journal est également créé pour toutes les connexions. Celui-ci est enregistré dans /var/log/rsyncd.log.

Maintenant, le transfert peut être testé depuis un ordinateur client. Cette opération a lieu à l'aide de la commande suivante :

rsync -avz sun::FTP

Cette commande permet de répertorier tous les fichiers présents sur le serveur dans le répertoire /srv/ftp. Cette requête est aussi enregistrée dans le fichier journal /var/log/rsyncd.log. Pour démarrer le transfert, indiquez un répertoire cible. Pour le répertoire actuel, utilisez « . ». Par exemple :

rsync -avz sun::FTP .

Par défaut, aucun fichier n'est supprimé lors de la synchonisation avec rsync. Lorsque la suppression doit être imposée, il faut indiquer l'option --delete en sus. Pour garantir qu'aucun fichier récent n'est écrasé, on peut indiquer l'option --update au lieu de --delete. Ainsi, les conflits qui en résultent doivent être résolus manuellement.

47.6.2. Informations complémentaires

Vous trouverez des informations importantes sur rsync dans les pages de manuel man rsync et man rsyncd.conf. Vous trouverez de la documentation technique sur les principes de fonctionnement de rsync dans /usr/share/doc/packages/rsync/tech_report.ps. Pour vous tenir informé sur rsync, vous pouvez consulter le site Web du projet à l'adresse http://rsync.samba.org.