Eu tenho uma grande imagem ISO que está sendo baixada por um cliente de torrent com a reserva de espaço ativada: isso significa que o tamanho do arquivo não é alterado enquanto alguns trechos no (4 Mib) estão constantemente mudando devido a um download.
No download de 90%, faço o rsync inicial para economizar tempo depois:
$ rsync -Ph DVD.iso / media / outro-hdd / enviando lista de arquivos incrementais DVD.iso 2.60G 100% 40.23MB / s 0:01:01 (xfer # 1, verificação = 0/1) enviados 2,60G bytes recebidos 73 bytes 34,59M bytes / s o tamanho total é de 2,60G de aceleração é de 1,00
Então, quando o arquivo estiver totalmente baixado, eu sincronizo 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 dir de destino está em outro FS e a cópia leva vários minutos. Por que não tenta acelerar a transferência ?! Como forçar o rsync
uso da transferência delta?
Respostas:
De acordo com a página de manual , psusi está certo:
fonte
-no-W
-no-W
não funciona apenas a opção longa-no-whole-file
. Minha razão para precisar dessa opção é quando estou configurando um backup e tenho arquivos grandes (por exemplo, imagens) que não têm o mesmo horário de modificação. É MUITO mais rápido, a velocidade é 163.26, para sincronizar esses arquivos usando a transferência delta no meu sistema de arquivos local.--no-whole-file
(observe o dobro--
no início).A resposta direta a esta pergunta é:
Use o
--no-W
sinalizador para forçar a compactação delta, não importa o local ou o remoto.Atualização: Parece que há mais na história. A
delta compression
parece ser ativada somente entre receber e processo de transmissão do rsync. Ao enviar o arquivo para o sistema de arquivos,rsync
ainda é possível gravar o (s) arquivo (s) inteiro (s), mesmo com a compactação delta ativada.Veja a investigação de "Wakan Tanka" aqui .
fonte
--no-W
sempre transfira o arquivo inteiro no meu caso. Verifique unix.stackexchange.com/questions/291156/…Por padrão, o rsync primeiro cria uma nova cópia do arquivo de destino e depois a substitui, por vários motivos de segurança. Você pode substituir isso especificando
--inplace
junto com--no-whole-file
. Isso instrui o rsync a fazer uma edição no local do arquivo de destino, aceitando os vários riscos (geralmente menores para esta situação), conforme documentado na página de manual.fonte
Por padrão,
rsync
cria uma cópia do arquivo no destino e substitui atomicamente o original pela nova cópia. Isso é feito por razões de segurança. O que você está procurando é a--inplace
opção, que fará comrsync
que modifique apenas as partes do arquivo de destino que foram alteradas em relação à origem.Para o caso de uso do OP, recomendo desativar também a pré-alocação, para que uma cópia esparsa possa ser sincronizada, o que será muito mais rápido. Para downloads, não se preocupe com a fragmentação, a menos que você esteja usando um sistema de arquivos muito antigo como o VFAT. Os arquivos de mídia, em particular, não são lidos com o desempenho máximo da mídia de armazenamento; portanto, desfragmentá-los é um esforço desperdiçado.
Para copiar seu diretório de downloads escassamente para o volume de destino, recomendo estes sinalizadores e operações, nesta ordem:
A primeira passagem copiará novos arquivos esparsamente para o destino. A segunda passagem atualizará os arquivos existentes no local, copiando apenas as alterações.
Como está fazendo cópias delta esparsas e no local, você pode executá-lo repetidamente sem incorrer em muito IO extra. Mesmo se você tiver 20 torrents sendo executados simultaneamente, isso não amplificará as gravações no destino ou afetará os volumes de origem / destino.
fonte