Como rsync um arquivo grande, com o menor gasto de CPU e largura de banda possível?

12

Eu tenho um arquivo de 500 GB que planejo fazer backup remotamente. O arquivo muda frequentemente. Eu vou estar rsyncing de um desktop para um servidor. Ambos podem executar o cliente ou servidor rsync.

Qual é o comando adequado para isso? Aquelas que eu tentei sofar demoraram para sempre ou simplesmente agiram de forma estranha.

Exemplo e resultados:

rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1 

Parece funcionar, mas somente se eu fizer isso duas vezes (?!). Além disso, devagar.

O comando acima faz a soma de verificação em ambos os computadores, ou apenas no envio? Está correto em contrário?

    
por Johan Allgoth 16.06.2010 / 13:46

2 respostas

10

Ele nunca será rápido, porque o rsync vai ter que ler / checksum o arquivo inteiro, e ler 500GB demorará muito tempo, a menos que você tenha armazenado em SSDs ou algo assim.

Experimente rsync -vhz --partial --inplace <file/server stuff> .

-c significa que ele verifica o arquivo inteiro ANTES de fazer qualquer transferência, em vez de usar o registro de data e hora para ver se ela foi alterada, o que significa ler o arquivo inteiro duas vezes. Se o registro de data e hora não estiver sendo alterado (deve), você poderá apenas touch do arquivo antes de executar o rsync.

Se isso não for um script, você pode adicionar --progress para ver como ele está sendo executado.

    
por 16.06.2010 / 14:03
2

Embora não seja rsync, dependendo do que você está tentando fazer isso pode funcionar melhor. Eu estava fazendo uma tarefa de backup semelhante e foi definitivamente mais rápido.

Use o netcat para fazer um tubo de alcatrão de uma máquina para outra.

Na sua máquina de origem:

tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454

Você está criando um tarball que preserva as permissões e o tempo e, em seguida, canaliza-o para o netcat na porta 45454

Na sua máquina de backup

nc -w 10 X.X.X.X 45454 | tar -xpv

X.X.X.X = endereço IP local da sua máquina de origem.

Para mim, isso funcionou bem. Ele foi executado em 25-30 MB / s através de LAN com fio, em oposição a 2-3 MB / s com rsync. A desvantagem é: não sincroniza, apenas faz uma cópia do que está na sua fonte. Para um backup como você está descrevendo - um arquivo de 500GB - pode funcionar muito bem.

Você pode ter que fazer isso como root para evitar problemas de permissão, ou você pode ter sorte.

FWIW, eu aprendi inicialmente sobre isso aqui: link

    
por 02.01.2016 / 06:52

Tags