rsync sincronização inicial

2

Sou novo no rsync. Eu tenho uma máquina Linux com um disco rígido externo (ext3) e uma máquina Windows com um disco rígido externo NTFS. Eu conectei o disco rígido NTFS à máquina Linux e fiz uma cópia espelhada da unidade ext3. Depois, copiei alguns arquivos novos para a unidade ext3 e, em seguida, conectei o NTFS à máquina Windows e, a partir do cygwin, executei:

rsync -Pratluvz user@linux_machine:/path/to/data /cygdrive/f/

Eu esperava que a sincronização fosse muito rápida, já que os dados são os mesmos, exceto pela adição mais recente. Uma linha típica se parece com isso:

Documents/path/to/file.ext
   2688670 100%  801.24kB/s    0:00:03 (xfer#1, to-check=2477/12876)

Demora quase tanto tempo para fazer a sincronização inicial quanto a cópia em si. No entanto, quando eu paro a sincronização e retoma, começa de onde parou. A primeira sincronização é especial, pois leva um inventário e grava em um arquivo? Mais tarde, as sincronizações serão mais rápidas? (Eu alterei o parâmetro 'z' sem efeito e removi o parâmetro 'c', o que ajudou.)

EDIT: Acontece que eu tinha incluído um '/' no final do caminho de origem, o que fez com que todo o conteúdo da pasta de dados fosse copiado, não a pasta em si. Parei a sincronização, removi o '/' e funcionou como originalmente esperado.

    
por MrUser 19.01.2015 / 20:34

1 resposta

2

O Rsync só se abstém de copiar um arquivo se achar que a cópia na árvore de destino é idêntica à cópia na árvore de destino. Por padrão, ele pressupõe que os arquivos são idênticos se tiverem o mesmo tamanho e a mesma hora de modificação. Você pode passar a opção -c para fazer o rsync calcular uma soma de verificação (que é muito mais lenta, já que tem que ler o arquivo inteiro na árvore de destino). Você pode passar a opção --size-only para fazer arquivos rsync skip cujo tamanho é o mesmo em ambos os lados, o que é perigoso, pois os arquivos cujo conteúdo foi alterado, mas onde a nova versão tem o mesmo tamanho que os antigos, serão ignorados.

Suspeito que na primeira vez que você fez a cópia, você não preservou os timestamps (por exemplo, usou cp -r em vez de cp -rp ou cp -a ). Se foi isso que aconteceu, o rsync não tem como saber que os arquivos têm o mesmo conteúdo. Quando a execução de rsync -a for concluída, os arquivos terão os mesmos timestamtps, portanto, o rsync saberá que não os copiará novamente.

Também é possível que os timestamps não sejam os mesmos porque o sistema de arquivos de origem e o sistema de arquivos de destino usam granularidade diferente para timestamps (por exemplo, segundo vs. microssegundo, portanto, um arquivo tem um tempo de modificação como 2014-12-10 08:54 : 32.123465 no lado da fonte, mas 2014-12-10 08:54:32 = 2014-12-10 08: 54: 32.000000 no lado do destino). Se esse for o caso e o rsync não detectá-lo automaticamente, passe a opção --modify-window , por ex. --modify-window=1 para permitir uma tolerância de 1 segundo em registros de data e hora.

    
por 19.01.2015 / 23:43