Je souhaite synchroniser un répertoire sur le serveur A avec un serveur B.
Sur le serveur A, j'ai créé un fichier rsyncd.conf
avec le contenu:
uid = rsync
gid = rsync
use chroot = no
pid file = /var/run/rsyncd.pid
[share]
comment = share
path = /etc/dirtosync
read only = false
list = yes
hosts allow = *
auth users = rsync
secrets file = /etc/rsyncd.secrets
Et j'ai créé sur le serveur A le fichier /etc/rsyncd.secrets
avec le contenu:
rsync:rsync
J'ai également créé sur le serveur A le fichier pid et l'utilisateur rsync avec le mot de passe rsync.
Sur le serveur A, sur le fichier: /etc/default/rsync
, je mets la valeur RSYNC_ENABLE
à true
et j'ai lancé le démon rsync avec la commande:
/etc/initd/rsync start
Sur le serveur A et le serveur B, le propriétaire et le groupe du répertoire sont rsync.
J'ai lancé sur la machine B la commande:
rsync -avzr rsync@<serverA>:/etc/dirtosync/* /etc/dirtosync/
J'ai aussi essayé sur le serveur A la commande
rsync -avzr /etc/dirtosync/* rsync@<serverB>:/etc/dirtosync/
Avec ces deux commandes, le résultat est le même: les fichiers sont synchronisés une seule fois lorsque je lance la commande, mais après si je modifie les fichiers sur le serveur A, ils ne sont pas synchronisés avec le serveur B.
Dois-je faire autre chose pour que le fichier soit synchronisé?
Vous comprenez mal comment rsync fonctionne. rsync ne réplique pas automatiquement les modifications. Ce n'est pas comme Dropbox ou un logiciel similaire. rsync synchronise uniquement les fichiers une fois à chaque exécution. Si vous souhaitez synchroniser plus souvent, placez la commande rsync dans un script cron (par exemple, regardez dans /etc/cron.daily ). Si vous voulez quelque chose qui synchronise automatiquement les modifications, comme le fait la liste déroulante, regardez un autre projet, tel que Sparkle Share ou ownCloud .
Vous pouvez également utiliser lsyncd: https://github.com/axkibe/lsyncd . J'utilise jusqu'à présent et c'est génial pour ça.
La syntaxe rsync
que vous avez publiée fonctionne en supposant que vous avez omis le nom d'hôte/IP de la machine, mais que vous n'utilisez pas le partage rsync
que vous avez configuré. Pour utiliser le partage, vous devez modifier votre syntaxe comme suit pour utiliser le partage:
rsync -av rsync@MACHINE-A::share/ /etc/dirtosync/
Cependant, cela ne configurera toujours pas une synchronisation continue entre ces dossiers. Ce que vous semblez rechercher est une synchronisation bidirectionnelle pour ces dossiers, que vous pouvez configurer dans le cron ou commencer à utiliser logiciel de synchronisation de fichiers Unison .
Unison n'est plus bien entretenu et je ne l'ai pas utilisé moi-même, mais j'en ai entendu de grandes choses. Il enregistre les modifications apportées aux fichiers dans un répertoire que vous avez configuré pour la synchronisation et les copie périodiquement à l'aide de rsync
ou d'une autre méthode (configurable).
Si vous allez suivre la route rsync
name __-in-the-cron, vous voudrez utiliser l'option -u
qui indique à rsync
de ne copier que les fichiers les plus récents. Vous rencontrerez cependant des problèmes avec les fichiers supprimés réapparaissant avec cette approche.