rsync sempre carrega todos os arquivos do macOS = Linux

2

Estou testando o rsync com o servidor WebDAV no contêiner do Docker:

  • diretório local: / Users / user / files /
  • servidor montado "remoto": / Volumes / webdav /

Este é o estado inicial:

# remote
➜  cat /Volumes/webdav/remotefile
change
➜  ls -la  /Volumes/webdav/remotefile
-rwx------  1 user  staff  7 Dec  2 01:39 /Volumes/webdav/remotefile

# local
➜  cat /Users/user/files/remotefile
change
➜  ls -la  /Users/user/files/remotefile
-rwx------  1 user  staff  7 Dec  2 01:39 /Users/user/files/remotefile

Agora vamos alterar o arquivo local e enviá-lo para o servidor "remoto":

➜  files echo 'add#0' > ./remotefile
➜  files cat remotefile
add#0
➜  files \rsync -varP /Users/user/files/* /Volumes/webdav/ --delete
building file list ...
1 file to consider
remotefile
           6 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 132 bytes  received 42 bytes  348.00 bytes/sec
total size is 6  speedup is 0.03

Upload de arquivos com êxito, conforme alterado. Mas se eu executar o rsync novamente local = > remoto, ele faz o upload novamente:

➜  files \rsync -varP /Users/user/files/* /Volumes/webdav/ --delete
building file list ...
1 file to consider
remotefile
           6 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 132 bytes  received 42 bytes  348.00 bytes/sec
total size is 6  speedup is 0.03

Agora eu testo a direção oposta:

➜  files \rsync -varP /Volumes/webdav/* /Users/user/files/ --delete
building file list ...
1 file to consider
remotefile
           6 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 132 bytes  received 42 bytes  348.00 bytes/sec
total size is 6  speedup is 0.03

Download de arquivos com sucesso. E mais uma vez ...

➜  files \rsync -varP /Volumes/webdav/* /Users/user/files/ --delete
building file list ...
1 file to consider

sent 80 bytes  received 20 bytes  200.00 bytes/sec
total size is 6  speedup is 0.06

... mostra 0 transferências, pois o arquivo não foi alterado. Esse é o comportamento esperado.

Por que não funciona com local = > upload remoto e sempre re-upload de arquivo?

Obrigado.

    
por f1nn 01.12.2016 / 23:58

1 resposta

2

Você confirmou que os relógios estão sincronizados com local e remote ?

Na página do manual do rsync :

 Rsync finds files that need to be transferred using a lqquick checkrq algorithm 
 (by default) that looks for files that have changed in size 
 or in last-modified time.

Se os relógios estiverem fora de sincronia e você não conseguir editá-los, tente dizer ao rsync para ficar um pouco "confuso" com a verificação de tempo. Novamente na página man do rsync

 --modify-window
    When comparing two timestamps, rsync treats the timestamps 
    as being equal if they differ by no more than the modify-window value. 
    This is normally 0 (for an exact match), but you may find it useful 
    to set this to a larger value in some situations. 
    In particular, when transferring to or from an MS Windows FAT filesystem 
    (which represents times with a 2-second resolution), 
    --modify-window=1 is useful (allowing times to differ by up to 1 second).

Tente executar o rsync com a opção --size-only e verificar se o comportamento de rsync é alterado.

Outra alternativa é usar a opção --checksum para o rsync. Isso requer mais E / S de disco e ciclos para gerar somas de verificação, portanto, pode ser mais lento. Seria interessante saber se isso muda o problema.

por 02.12.2016 / 00:11