Como acelerar o rsync?

34

Estou executando o rsync para sincronizar um diretório no meu HDD USB externo. São cerca de 150 gigs de dados. 50000+ arquivos, eu acho.

Ele está executando sua primeira sincronização no momento, mas seus arquivos de cópia a uma taxa de apenas 1-5 MB / s. Isso parece incrivelmente lento para um gabinete USB 2.0. Não há outras transferências acontecendo na unidade.

Aqui estão as opções que usei:

rsync -avz --progress /mysourcefolder /mytargetfolder

Estou executando o Ubuntu Server 9.10.

    
por Jake Wilson 17.02.2010 / 00:52

5 respostas

33

Para a primeira sincronização, use apenas

cp -a  /mysourcefolder /mytargetfolder

O rsync só adiciona sobrecarga quando o destino está vazio.

também .. a opção -z provavelmente está matando seu desempenho, você não deve usá-lo se não estiver transferindo dados por um link lento.

    
por 17.02.2010 / 01:13
34

Se você estiver usando rsync com uma rede rápida ou disco para disco na mesma máquina,

não usando a compactação -z

e usando --inplace

acelera o desempenho dos discos rígidos ou da rede

A compactação

usa muita CPU

não usando o inplace faz o disco rígido debulhar muito (ele usa um arquivo temporário antes de criar a final)

compressão & não usar inplace é melhor para fazer isso pela internet (rede lenta)

NOVO: Esteja ciente do destino ... se houver "compactação" do NTFS ativada ... isso diminuirá bastante os arquivos grandes (eu diria 200MB +). O rsync quase parece parado, causado por isso.

    
por 30.04.2010 / 17:15
19

Use a opção -W . Isso desativa as comparações delta / diff. Quando o tamanho / tamanho do arquivo é diferente, o rsync copia todo o arquivo.

Remova também a opção -z . Isso é útil apenas para compactar o tráfego de rede.

Agora, rsync deve ser tão rápido quanto cp .

    
por 19.06.2013 / 12:13
2

Primeiro - o número de arquivos, neste caso, será um fator importante. É um tamanho médio de 3MB cada. Há provavelmente um gargalo que influencia a velocidade no caso do OP. Mais aqui - é uma leitura bem seca, mas a foto da capa vale a pena.

Então, usando o rsync para copiar para um diretório vazio? Aqui estão algumas maneiras de acelerar:

  1. Não -z - definitivamente não use -z como no OP.
  2. - sem compactação pode acelerar você. Isso pode ter o maior impacto ... meu teste foi de 13.000 arquivos, tamanho total de 200MB e uso do rsync 3.1.3. Eu sincronizei com uma partição diferente na mesma unidade SSD interna. Com --no-compress, recebo 18 MBps e sem ele ganho 15 MBps. cp, a propósito, recebe 16 MBps. Esse é um tamanho médio de arquivo muito menor. Além disso - não consigo encontrar nenhuma documentação para --no-compress. Eu aprendi sobre isso neste post em stackexchange.com.
  3. -W para copiar arquivos inteiros - use sempre isso se você não usa t quer comparar as diferenças; Não importa que o ponto do rsync é comparar diferenças e apenas atualizar as mudanças.
  4. -S para lidar com arquivos esparsos bem - não pode ferir se você não tem arquivos esparsos.
  5. --exclude-from ou algo semelhante para excluir arquivos você pode não precisar reduzir o tempo, mas isso não aumentará sua velocidade de transferência.
  6. É possível se você enviar a saída para um arquivo como este rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err - o primeiro > basicamente imprime um arquivo com todas as coisas que você normalmente veria, e os 2 > refere-se a mensagens de erro.
  7. Finalmente, executando várias instâncias do rsync para diferentes partes de sua transferência podem ser uma grande ajuda.

Meu comando seria:

rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run

Se tudo parecia bem, eu excluiria "--dry-run" e deixaria ir. A, X e E cobrem atributos estendidos e permissões não cobertas por -a, l é para links suaves, H é para links físicos e h é para legível por humanos.

Atualizando um diretório já sincronizado em uma unidade USB, ou a mesma unidade, ou através de uma rede, todos exigirão diferentes comandos rsync para maximizar a velocidade de transferência.

Bônus - aqui está a página do manual do rsync , e se você quiser para testar a velocidade do disco rígido, bonnie ++ é um boa opção, e para a velocidade da sua rede, tente iperf .

* O post tem quase dez anos, mas os mecanismos de pesquisa gostam dele e eu continuo vendo. É uma boa pergunta, e eu não acho que a melhor resposta para "como acelerar o rsync" seja "use cp".

    
por 26.09.2018 / 23:49
1

Você não diz qual a distribuição de tamanho dos seus arquivos. Se houver muitos arquivos pequenos, isso reduzirá a taxa de transferência geral aumentando a latência do movimento da cabeça nas unidades de origem e de destino à medida que a ferramenta abre novos arquivos e o SO mantém entradas de diretório e outros metadados (como o diário do sistema de arquivos o diário de metadados, como o ext3 / ext4 e o NTFS, por padrão) atualizados durante a transferência. Um processo de cópia de arquivos só vai "entrar no seu passo" para objetos maiores, quando uma simples transferência em massa está acontecendo.

    
por 17.02.2010 / 02:15