Unison ersetzt neuere Symlinks durch ältere Dateien mit der Option -force newer

Unison ersetzt neuere Symlinks durch ältere Dateien mit der Option -force newer

Ich habe ein Problem mit Unison und Symlinks. Ich habe einen Testfall erstellt, um es leichter verständlich zu machen und es selbst auszuprobieren.

Zuerst erstellen wir die beiden Verzeichnisse, die synchronisiert werden sollen. Und einige Dateien im ersten Verzeichnis.

~/testdir$ mkdir a
~/testdir$ mkdir b
~/testdir$ echo "hello" > a/one
~/testdir$ echo "goodbye" > a/two

Wir führen unisono mit diesen Parametern aus. Dadurch sollten die Änderungszeiten erhalten bleiben und die Aktualisierung neuerer Dateien erzwungen werden.

~/testdir$ unison -force newer -times -auto -batch a b

Nachdem ich dies ausgeführt habe, habe ich ein exaktes Duplikat.

a:
total 16K
drwx------ 2 pruebas.ubuntu citius 4,0K oct  8 16:51 .
drwx------ 4 pruebas.ubuntu citius 4,0K oct  8 16:50 ..
-rw------- 1 pruebas.ubuntu citius    6 oct  8 16:52 one
-rw------- 1 pruebas.ubuntu citius    8 oct  8 16:52 two

b:
total 16K
drwx------ 2 pruebas.ubuntu citius 4,0K oct  8 16:52 .
drwx------ 4 pruebas.ubuntu citius 4,0K oct  8 16:50 ..
-rw------- 1 pruebas.ubuntu citius    6 oct  8 16:52 one
-rw------- 1 pruebas.ubuntu citius    8 oct  8 16:52 two

Und hier liegt das Problem: Ich lösche eine dieser Dateien und ersetze sie durch einen symbolischen Link.

~/testdir/a$ rm one
~/testdir/a$ ln -s two one
~/testdir/a$ ls -lah
total 12K
drwx------ 2 pruebas.ubuntu citius 4,0K oct  8 16:55 .
drwx------ 4 pruebas.ubuntu citius 4,0K oct  8 16:54 ..
lrwxrwxrwx 1 pruebas.ubuntu citius    3 oct  8 16:55 one -> two
-rw------- 1 pruebas.ubuntu citius    8 oct  8 16:54 two

Anschließend löscht Unison den symbolischen Link und ersetzt ihn durch die ältere Version der Datei.

~/testdir$ unison -force newer -times -auto -batch a b
Contacting server...
Looking for changes
Reconciling changes
new link <====            one  
Propagating updates
UNISON 2.40.102 started propagating changes at 16:56:25.03 on 08 Oct 2014
[BGN] Copying one from /home/remoto/pruebas.ubuntu/testdir/b to /home/remoto/pruebas.ubuntu/testdir/a
[END] Copying one
UNISON 2.40.102 finished propagating changes at 16:56:25.03 on 08 Oct 2014
Saving synchronizer state
Synchronization complete at 16:56:25  (1 item transferred, 0 skipped, 0 failed)
~/testdir$ ls -lah a
total 16K
drwx------ 2 pruebas.ubuntu citius 4,0K oct  8 16:56 .
drwx------ 4 pruebas.ubuntu citius 4,0K oct  8 16:54 ..
-rw------- 1 pruebas.ubuntu citius    6 oct  8 16:54 one
-rw------- 1 pruebas.ubuntu citius    8 oct  8 16:54 two

Dies geschieht nicht, wenn ich die Option nicht verwende -force newer. Dies scheint mir jedoch ein seltsames Verhalten zu sein. DieHandbuchsagt:

Sie können auch -force newer (oder -force older) angeben, um Unison zu zwingen, die Datei mit der späteren (früheren) Modtime auszuwählen. In diesem Fall muss auch die Einstellung -times aktiviert werden.

Es scheint, als würde Unison dieses Verhalten bei symbolischen Links nicht befolgen. Kommt Ihnen das wie ein Fehler vor? Oder übersehe ich etwas?

verwandte Informationen