Відповіді:
Rsync не намагається вирішити конфлікти. Це не його робота. У Rsync навіть немає способу виявити, що обидві сторони змінили файл, оскільки він не має інформації про якогось спільного предка.
За допомогою параметрів за замовчуванням вихідний файл беззастережно копіюється до місця призначення, замінюючи файл призначення. За допомогою цього пункту -u
вихідний файл копіюється лише у тому випадку, якщо файл призначення не відсутній або старший за вихідний файл. За допомогою цього пункту --ignore-existing
вихідний файл копіюється лише в тому випадку, якщо файл призначення не існує.
Якщо ви хочете виявити конфлікти, вам потрібен інструмент, який знає, коли файли були востаннє синхронізовані, щоб він міг відрізняти {призначення = стара версія, джерело = нова версія} від {призначення = нова версія 1, джерело = нова версія 2 }. Використовуйте Unison , який робить саме це. Unison - це двосторонній синхронізатор: він копіює файл, який був змінений з часу останньої синхронізації, на ту сторону, де файл не був змінений. Якщо жодна сторона не була змінена або якщо обидві сторони були змінені однаково, вона нічого не робить. Якщо обидві сторони були змінені по-різному, це повідомляє вам і дозволяє вам вибрати пропустити, скопіювати в одну сторону або скопіювати в інший бік.
Якщо потрібно автоматичне вирішення конфліктів, тобто автоматичне злиття (коли це можливо - завжди є випадки, коли необхідне ручне злиття), використовуйте систему контролю ревізії, наприклад git.