Rsync не пытается разрешать конфликты. Это не его работа. Rsync даже не может обнаружить, что обе стороны изменили файл, потому что у него нет информации о каком-либо общем предке.
При использовании параметров по умолчанию исходный файл безоговорочно копируется в место назначения, перезаписывая файл назначения. С помощью этой опции -u
исходный файл копируется, только если конечный файл отсутствует или старше исходного файла. С помощью этой опции --ignore-existing
исходный файл копируется, только если целевой файл не существует.
Если вы хотите обнаруживать конфликты, вам нужен инструмент, который знает, когда файлы были в последний раз синхронизированы, чтобы он мог отличить {назначение = старая версия, источник = новая версия} от {назначение = новая версия 1, источник = новая версия 2 }. Используйте Unison , который делает именно это. Unison - это двунаправленный синхронизатор: он копирует файл, который был изменен с момента последней синхронизации, в ту сторону, где файл не был изменен. Если ни одна из сторон не была изменена, или если обе стороны были изменены одинаково, это ничего не делает. Если обе стороны были изменены по-разному, это говорит вам и позволяет выбрать пропустить, копировать в одном направлении или копировать в другом направлении.
Если вам нужно автоматическое разрешение конфликтов, то есть автоматическое слияние (когда это возможно - всегда есть случаи, когда необходимо ручное слияние), используйте систему контроля версий, такую как git.
Жиль "ТАК - перестань быть злым"
источник