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.
Gilles 'SO- arrête d'être méchant'
la source