Comment rsync résout-il les conflits?


14

Que se passe-t-il si les partages de la machine A et de la machine B ont un répertoire précédemment synchronisé via rsync, et que A change un fichier et que B change le même fichier, et vous rsyncde A à B?

Est-ce peut-être quelque chose comme un conflit de fusion git?

Le conflit peut-il être facilement résolu?

Réponses:


25

Rsync n'essaie pas de résoudre les conflits. Ce n'est pas son travail. Rsync n'a même aucun moyen de détecter que les deux côtés ont modifié le fichier, car il n'a aucune information sur un ancêtre commun.

Avec les options par défaut, le fichier source est copié sans condition vers la destination, écrasant le fichier de destination. Avec l'option -u, le fichier source est copié uniquement si le fichier de destination est manquant ou plus ancien que le fichier source. Avec l'option --ignore-existing, le fichier source n'est copié que si le fichier de destination n'existe pas.

Si vous souhaitez détecter les conflits, vous avez besoin d'un outil qui sait quand les fichiers ont été synchronisés pour la dernière fois, afin qu'il puisse distinguer {destination = ancienne version, source = nouvelle version} de {destination = nouvelle version 1, source = nouvelle version 2 }. Utilisez Unison , qui fait exactement cela. Unison est un synchroniseur bidirectionnel: il copie le fichier qui a été modifié depuis la dernière synchronisation du côté où le fichier n'a pas été modifié. Si aucun côté n'a été modifié, ou si les deux côtés ont été modifiés de manière identique, cela ne fait rien. Si les deux côtés ont été modifiés de différentes manières, il vous l'indique et vous permet de choisir de sauter, de copier dans une direction ou de copier dans l'autre.

Si vous souhaitez une résolution automatique des conflits, c'est-à-dire des fusions automatiques (si possible - il y a toujours des cas où une fusion manuelle est nécessaire), utilisez un système de contrôle des révisions tel que git.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.