Unison 使用選項 -force newer 將較新的符號連結替換為較舊的文件

Unison 使用選項 -force newer 將較新的符號連結替換為較舊的文件

我在 Unison 和符號連結方面遇到問題。我創建了一個測試案例,以便更容易理解並親自嘗試。

首先,我們建立將同步的兩個目錄。還有第一個目錄中的一些檔案。

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

我們與這些參數一致運行。它應該保留修改時間並強制更新到較新的檔案。

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

運行後,我得到了一個完全相同的副本。

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

問題來了。我刪除了其中一個文件並將其替換為符號連結。

~/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

然後,Unison 刪除符號連結並將其替換為舊版本的檔案。

~/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

如果我不使用該選項,就不會發生這種情況-force newer。不過,這對我來說似乎是一種奇怪的行為。這手動的說:

您也可以指定 -force newer (或 -force old)來強制 Unison 選擇具有較晚(較早)modtime 的檔案。在這種情況下,也必須啟用 -times 首選項。

看起來 Unison 並沒有透過符號連結來遵循這種行為。這對你來說像是個錯誤嗎?還是我錯過了什麼?

相關內容