rsync : Synchronisation distante de fichiers
Présentation
rsync (remote synchronization) est un logiciel libre de synchronisation de fichiers, distribué sous GNU GPL. Notez que l'on peut aussi s'en servir localement entre 2 systemes de fichiers.
Notations:
Dans cet article, nous appellerons :
- Machine source : Celle qui contient les fichiers source à copier.
- Machine de destination : Celle sur laquelle les fichiers doivent être copiés.
Appel depuis la machine destinataire des fichiers
rsync -auvve ssh --delete root@machine_source:/chemin/racine/des/fichiers/a/copier/ /chemin/de/destination --stats > /tmp/rsync.log 2>&1
- -a: Mode archive. Ce qui implique les options suivantes:
- -r: Récussive.
- -l: Copie tels quels les liens symboliques.
- -p: Préserve les permissions.
- -t: Préserve les dates.
- -g: Préserve les groupes.
- -o: Préserve le propriétaire(root)
- -D: Préserve les périphériques.
- -u: Update. Ne transfert que les fichiers plus récents, ou si la taille a changé.
- --delete: Efface sur la cible les fichiers qui ne sont plus présents dans la source.
- -e [shell]: Ici, on choisit SSH.
Ce cas possède une limitation si on a sécurisé le service ssh pour empêcher les connexions directes avec le super-utilisateur root.
Ou encore, un manque de chance, le propriétaire des fichiers à synchroniser n'a pas de mot de pase associé, le compte a été créé automatiquement à l'installation de l'application.
- s'il n'est pas en nologin, il est possible d'utiliser le procédé ci-dessus en ajoutant une négociation à l'aide de clé SSH.
- Implémenter le service rsyncd sur la machine source comme ci dessous permet de s'afranchir de ceci.
Jolies options
- --stats
- --progress
Methode avec un serveur rsync
Nous allons implémenter sur la machine source un serveur rsync.
Le travail est déjà un peu maché. Ce service est géré par le daemon xinetd. Le fichier de configuration pour rsync existe normalement déjà.
Activation de rsyncd par xinetd
fichier : /etc/xinetd.d/rsync
Passer l'option disable à "no", ou commenter la ligne.
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
Prise en compte de la nouvelle configuration:
pkill -HUP xinetd
Fichier de configuration du service
Editer ou créer le fichier : /etc/rsyncd.conf
uid = nobody gid = nobody use chroot = no read only = yes log file = /var/log/rsyncd.log [toto] uid = mailsrv gid = mail path = /chemin/racine/des/fichiers/a/copier/ hosts allow = machine_destination.domaine
Dans cet exemple, il n'y a qu'une section "toto" mais il est possible bien sur d'en créer plusieures pour des emplacements de fichiers et des droits différents.
Lancement à partir de la machine de destination.
rsync -avH --delete rsync://machine_source/toto/ /emplacement/de/destination 2>&1|tee /var/log/rsync1.log