Por que o rsync não usa a transferência delta para arquivos locais?

23

Eu tenho uma imagem iso grande que está sendo baixada por um cliente de torrent com reserva de espaço ativada: isso significa que o tamanho do arquivo não está mudando enquanto alguns pedaços em (4 Mib) estão constantemente mudando devido a um download.

Com 90% de download, faço o rsync inicial para economizar tempo depois:

$ rsync -Ph DVD.iso /media/another-hdd/
sending incremental file list

DVD.iso
       2.60G 100%   40.23MB/s    0:01:01 (xfer#1, to-check=0/1)

sent 2.60G  bytes  received 73 bytes  34.59M bytes/sec
total size is 2.60G   speedup is 1.00

Então, quando o arquivo estiver totalmente descarregado, eu rssync novamente:

total size is 2.60G   speedup is 1.00

Speedup = 1 diz que a transferência delta não foi usada, embora 90% do arquivo não tenha sido alterado, o diretório de destino esteja em outro FS e a cópia leve vários minutos. Por que não tenta acelerar a transferência ?! Como posso forçar o rsync a usar a transferência delta?

    
por kolypto 17.01.2011 / 14:59

3 respostas

19

De acordo com a página de manual , a psusi está certa:

-W, --whole-file: The transfer may be faster if this option is used when the bandwidth between the source and destination machines is higher than the bandwidth to disk (especially when the "disk" is actually a networked filesystem). This is the default when both the source and destination are specified as local paths, but only if no batch-writing option is in effect.

    
por 18.01.2011 / 10:02
16

A resposta direta a essa pergunta é:

Use o sinalizador --no-W para forçar a compactação delta, independentemente de local ou remota.

Atualização: Parece que há mais na história. O delta compression parece estar ativado apenas entre o processo de recepção e transmissão do rsync. Ao enviar o arquivo para o sistema de arquivos, rsync ainda pode gravar o (s) arquivo (s) inteiro (s), mesmo com a compactação delta ativada.

Veja a investigação "Wakan Tanka" aqui .

    
por 08.05.2013 / 13:58
2

Por padrão, o rsync primeiro cria uma nova cópia do arquivo de destino e o substitui por vários motivos de segurança. Você pode substituir isso especificando --inplace junto com --no-whole-file . Isso diz ao rsync para fazer uma edição no local do arquivo de destino, aceitando os vários riscos (geralmente menores para essa situação) conforme documentado na página man.

    
por 20.09.2017 / 17:36

Tags