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 并没有通过符号链接来遵循这种行为。这对你来说像是一个错误吗?或者我错过了什么?

相关内容