web-dev-qa-db-fra.com

RSync: Comment synchroniser dans les deux sens?

Je souhaite utiliser rsync pour synchroniser deux répertoires dans les deux sens.

Je fais référence à la synchronisation dans le sens classique du terme (Pas comment cela est entendu dans les manuels rsync):
Je veux mettre à jour les répertoires dans les deux sens, , En fonction de celui qui est plus récent.

Est-ce que cela peut être fait avec rsync (de préférence sous Linux)?
Si non, quelles autres solutions existent?

55

Il suffit de l'exécuter deux fois, avec le mode "plus récent" (indicateur -u ou --update) plus -t (pour copier le temps de modification du fichier), -r (pour les dossiers récursifs) et -v (pour une sortie détaillée pour savoir ce que c'est. Faire):

rsync -rtuv /path/to/dir_a/* /path/to/dir_b
rsync -rtuv /path/to/dir_b/* /path/to/dir_a

Cela ne gérera pas les suppressions, mais je ne suis pas sûr qu'il existe une bonne solution à ce problème avec seulement une synchronisation périodique.

52
jsight

Savez-vous Unison File Synchronizer ?

Unison est un outil de synchronisation de fichiers pour Unix et Windows. Il permet deux les répliques d'une collection de fichiers et les répertoires à stocker sur différents hôtes (ou différents disques sur le même hôte), modifiés séparément, puis mis à jour en propageant le changements dans chaque réplique à l'autre. ...

Notez également qu'il résiste aux pannes:

Unison résiste aux échecs. Il est veillez à laisser les répliques et ses propres structures privées dans un sens Etat en tout temps, même en cas de terminaison anormale ou échecs de communication.

53
MaD70

Merci jsight

rsync -urv --progress dir_a dir_b && rsync -urv  --progress dir_b dir_a

La deuxième synchronisation se produirait immédiatement après la fin de la première synchronisation. Si la structure du répertoire est énorme, cela vous fera gagner du temps, car il n’est pas nécessaire de s’asseoir devant le PC. Si la structure est énorme, supprimez les éléments verbeux et progress

rsync -ur dir_a dir_b && rsync -ur dir_b dir_a
5
Mayank Agarwal

Utilisez rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir

par exemple:

rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff

Synchronisera les fichiers xxx avec des fichiers/fichiers xxx différents. Si le fichier/fichiers xxx n’existait pas, il le créera - c.-à-d.

-pogtEtv - juste un tas d'options pour préserver les métadonnées du fichier, plus v - verbose et r - récursif

--progress - affiche la progression de la synchronisation en temps réel - super utile si vous copiez de gros fichiers

--bwlimit=2000 - définit la vitesse maximale de copie/synchronisation (nb = bande passante)

P.S. rsync est extrêmement important lorsque vous travaillez sur un réseau. Si vous utilisez un ordinateur local, vous pouvez utiliser des commandes telles que cp .

Bonne chance! 

1
Bohdan

J'utilise rsync avec inotifywait. Lorsque vous modifiez un fichier, rsync sera exécuté.

inotifywait -m --exclude "$_LOG_FILE" -r -e create,delete,delete_self,modify,moved_to --format "%w%f" "$folder"

Vous devez exécuter inotifywait sur les deux hôtes. S'il vous plaît vérifier exemple inotifywait

0
iadd

Ce dont tu as besoin c'est Rclone . Rclone ("rsync for cloud storage") est un programme Linux en ligne de commande permettant de synchroniser des fichiers et des répertoires vers et à partir de différents fournisseurs de stockage dans le cloud (box, dropbox, ftp, etc.) et de systèmes de fichiers locaux. Rlone ne prend en charge que la synchronisation miroir.

Une autre solution plus graphique incluant la synchronisation en temps réel consisterait à utiliser FreeFileSync , qui inclut le programme RealTimeSync. FreefileSync prend en charge la synchronisation bidirectionnelle bidirectionnelle qui inclut la gestion des suppressions.

 FreFileSync gui

0
user1461607