Unison substitui os links simbólicos mais recentes por arquivos mais antigos usando a opção -force newer

2

Estou tendo um problema com o Unison e os links simbólicos. Eu criei um caso de teste para facilitar a compreensão e tentar isso por si mesmo.

Primeiro, criamos os dois diretórios que serão sincronizados. E alguns arquivos no primeiro diretório.

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

Corremos em uníssono com esses parâmetros. Ele deve preservar os tempos de modificação e forçar as atualizações para arquivos mais recentes.

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

Depois de executar isso, eu tenho uma cópia exata.

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

Aqui vem o problema. Eu apago um desses arquivos e o substituo por um link simbólico.

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

Em seguida, o Unison exclui o link simbólico e o substitui pela versão mais antiga do arquivo.

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

Isso não acontecerá se eu não usar a opção -force newer . Isso parece um comportamento estranho para mim, no entanto. O manual diz:

You can also specify -force newer (or -force older) to force Unison to choose the file with the later (earlier) modtime. In this case, the -times preference must also be enabled.

Parece que o Unison não está seguindo esse comportamento com links simbólicos. Isso parece um erro para você? Ou estou faltando alguma coisa?

    
por Jorge Suárez de Lis 08.10.2014 / 17:08

0 respostas