Synchro distante automatique via un daemon rsync sur Ubuntu
Et non ! Rsync n'est pas une voiture des années 90 mais bien un outil de synchronisation de fichiers à distance très puissant. Il peut notamment tourner en daemon afin d'autoriser les appels distants automatiques, via Cron par exemple.
Si par un hasard hallucinant vous ne disposiez pas de rsync sur votre Ubuntu, voici la démarche à suivre pour l'installer en ligne de commande :
$ sudo apt-get install rsync
Bien. Nous disposons de deux machines, la machine A - disposant d'un utilisateur jeanpierre
- et la machine B - habitée par edmond
. Nous devons automatiser la synchro d'un répertoire présent sur la machine A vers la machine B. On va donc installer un daemon rsync sur la machine A et le configurer en créant le fichier /etc/rsyncd.conf
:
uid = jeanpierre gid = jeanpierre use chroot = no max connections = 4 syslog facility = local5 pid file = /var/run/rsyncd.pid [mon_partage] comment = Mon partage path = /home/jeanpierre/monpartage read only = yes list = yes hosts allow = * auth users = edmond, gerard secrets file = /etc/rsyncd.secrets
Je vous renvoie à cette page sur la syntaxe du fichier rsync.conf pour plus de renseignements.
On crée un fichier process vide :
jeanpierre@machineA:~$ sudo touch /var/run/rsyncd.pid
Les comptes utilisateurs se définissent dans le fichier /etc/rsyncd.secrets
sous la traditionnelle forme login:motdepasse
comme ci-dessous :
edmond:3dm0nd gerard:g3r4rd
Par souci de sécurité et de confidentialité, ces fichiers ne devront pas être lisibles par un autre utilisateur que le root, donc :
jeanpierre@machineA:~$ sudo chmod 640 /etc/rsyncd.conf jeanpierre@machineA:~$ sudo chmod 640 /etc/rsyncd.secrets
Lancer rsync en daemon sur la machine A (machinea.domain.tld) :
jeanpierre@machineA:~$ sudo rsync --daemon
Et depuis la machine B (machineb.domain.tld) :
edmond@machineB:~$ rsync -avz edmond@machinea.domain.tld::mon_partage ~/mon/repertoire/cible
La saisie du password de l'utilisateur edmond
défini précedemment lancera la synchronisation effective des fichiers. Pour éviter la saisie manuelle du password, il faut envisager d'utiliser l'option --password-file=FILE
. Pour se faire, il faut créer un fichier contenant juste le mot de passe en clair, par exemple dans /home/edmond/.rsync_passwd
comme ceci :
3dm0nd
Ce fichier devra n'être accessible que par l'utilisateur système utilisant la commande rsync
. Dans le cas de l'utilisateur connecté à la machine B :
edmond@machineB:~$ chmod 640 /home/edmond/.rsync_passwd
On peut alors lancer une synchro de cette façon :
edmond@machineB:~$ rsync -avz edmond@machinea.domain.tld::mon_partage ~/mon/repertoire/cible --password-file=/home/edmond/.rsync_passwd
L'avantage de cette ligne de commande est qu'elle peut être appellée depuis un Cron et donc ne pas nécessiter de saisie du mot de passe manuellement.
Enfin, sachez que les éventuelles erreurs d'authentification seront logguées dans le fichier /var/log/syslog
.
Ce billet intitulé Synchro distante automatique via un daemon rsync sur Ubuntu a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.