Odpowiedzi:
Rsync nie próbuje rozwiązać konfliktów. To nie jest jego praca. Rsync nie ma nawet sposobu na wykrycie, że obie strony zmodyfikowały plik, ponieważ nie ma informacji o żadnym wspólnym przodku.
Przy domyślnych opcjach plik źródłowy jest bezwarunkowo kopiowany do miejsca docelowego, zastępując plik docelowy. Dzięki tej opcji -u
plik źródłowy jest kopiowany tylko wtedy, gdy brakuje pliku docelowego lub jest on starszy niż plik źródłowy. Dzięki tej opcji --ignore-existing
plik źródłowy jest kopiowany tylko wtedy, gdy plik docelowy nie istnieje.
Jeśli chcesz wykryć konflikty, potrzebujesz narzędzia, które ma świadomość, kiedy pliki były ostatnio synchronizowane, aby mógł odróżnić {miejsce docelowe = stara wersja, źródło = nowa wersja} od {miejsce docelowe = nowa wersja 1, źródło = nowa wersja 2 }. Użyj Unison , który właśnie to robi. Unison to dwukierunkowy synchronizator: kopiuje plik, który został zmodyfikowany od ostatniej synchronizacji, na stronę, na której plik nie został zmodyfikowany. Jeśli żadna ze stron nie została zmodyfikowana lub obie strony zostały zmodyfikowane identycznie, nic nie robi. Jeśli obie strony zostały zmodyfikowane na różne sposoby, informuje o tym i pozwala ci pominąć, skopiować w jednym kierunku lub skopiować w drugim kierunku.
Jeśli chcesz automatycznego rozwiązywania konfliktów, tj. Automatycznego łączenia (jeśli to możliwe - zawsze są przypadki, w których konieczne jest ręczne scalenie), użyj systemu kontroli wersji, takiego jak git.