Rsync versucht nicht, Konflikte zu lösen. Das ist nicht seine Aufgabe. Rsync kann nicht einmal erkennen, dass beide Seiten die Datei geändert haben, da es keine Informationen zu gemeinsamen Vorfahren gibt.
Mit den Standardoptionen wird die Quelldatei bedingungslos in das Ziel kopiert und die Zieldatei überschrieben. Mit dieser Option -u
wird die Quelldatei nur kopiert, wenn die Zieldatei fehlt oder älter als die Quelldatei ist. Mit der Option --ignore-existing
wird die Quelldatei nur kopiert, wenn die Zieldatei nicht existiert.
Wenn Sie Konflikte erkennen möchten, benötigen Sie ein Tool, das weiß, wann die Dateien zuletzt synchronisiert wurden, damit {Ziel = alte Version, Quelle = neue Version} von {Ziel = neue Version 1, Quelle = neue Version 2 unterschieden werden kann }. Verwenden Sie Unison , das genau das tut. Unison ist ein bidirektionaler Synchronisierer: Er kopiert die Datei, die seit der letzten Synchronisierung geändert wurde, auf die Seite, an der die Datei nicht geändert wurde. Wenn keine Seite geändert wurde oder wenn beide Seiten identisch geändert wurden, hat dies keine Auswirkungen. Wenn beide Seiten auf unterschiedliche Weise geändert wurden, werden Sie darüber informiert und können auswählen, ob Sie in eine Richtung oder in die andere Richtung überspringen, kopieren möchten.
Wenn Sie eine automatische Konfliktlösung wünschen, dh automatische Zusammenführungen (wenn möglich - es gibt immer Fälle, in denen eine manuelle Zusammenführung erforderlich ist), verwenden Sie ein Revisionskontrollsystem wie git.
Gilles 'SO - hör auf böse zu sein'
quelle