Por que meu rsync é tão lento comparado a cp puro ou mesmo scp?

14

Estou transferindo os arquivos do Linux para o Windows 7 por meio de um compartilhamento montado (o compartilhamento é montado do Windows no Linux). Estou copiando muitos dados (ou seja, quase um TB) da antiga para a nova máquina dentro da minha LAN. Já tenho pena que eu só tenho 100MBit. Naturalmente, usei cegamente o rsync, mas já me perguntei depois de um dia por que é tão lento. A ativação do medidor de progresso mostrou uma taxa de transferência de cerca de 2 MB / s.

Então peguei um arquivo grande razoável (800MB) e acompanhei o tempo de transferência (1):

cp : 05:33
scp (2): 06:33
rsync : 21:51

1) Eu apaguei os arquivos entre cada execução
2) scp via localhost para a mesma máquina Linux diretamente no compartilhamento; completamente inútil, mas forneceu um medidor de progresso

Os testes foram tão simples quanto

(cp|scp|rsync) <source> <destination>

Nenhum argumento especial, exceto host / port para scp. Eu até tentei a opção -W para o rsync, mas cancelei depois de dez minutos. rsync é 3.0.3 rodando em Lenny. Para poder interromper o processo de cópia a qualquer momento e continuar, leve-me ao rsync, mas agora acho que preciso seriamente reconsiderar esse requisito.

Como é possível uma diferença tão grande?

Atualizar / Resolvido:

Graças a rschuler eu consegui resolver o problema: use o daemon rsync em vez da montagem smb por motivos de eficiência. O dito DeltaCopy funciona, mas é preciso tomar cuidado com algumas coisas

  • é um bom invólucro de interface gráfica, mas se algo está errado, é bom saber como consertá-lo. Parece que eu digitei minhas credenciais de usuário, sob a qual executar o serviço rsync, errado na primeira vez, mas a GUI não me permitiu definir um novo. Eu descobri que estava funcionando como um serviço e consegui estabelecer as credenciais adequadas lá
  • Necessário para adicionar manualmente a porta ao firewall para permitir conexões
  • Gosto pessoal: assegure-se de que os compartilhamentos estejam protegidos por senha ou, se não estiverem, talvez garanta que o serviço não comece automaticamente com o Windows; apenas no caso
  • O binário rsync compactado não é uma porta nativa do Windows, mas é baseado no cygwin. No entanto, a DLL cygwin contida não manipula adequadamente os caracteres não ascii do UTF8. Obtenha uma DLL fixa no link .

Depois disso, a taxa de transferência saltou de 2MB / s para ~ 8MB / s; absolutamente fantástico!

    
por mark 28.05.2010 / 21:38

1 resposta

17

(o compartilhamento é montado a partir do Windows no Linux)

Esse é o seu problema. O rsync está fazendo somas de verificação contínuas no destino. As janelas compartilham. Você está puxando todos os dados pela rede para calcular as somas de verificação. (Possivelmente mais de uma vez).

O que você precisa fazer é ter o rsync em execução nas duas máquinas. Dessa forma, apenas as diferenças (e somas de verificação) serão transferidas pelo cabo de rede. DeltaCopy é um rsync de janela. Tem documentação boa o suficiente para você ir.

Veja a resposta votada para esta pergunta para uma melhor explicação porque eu acho você pode estar usando indevidamente o rsync.

    
por 28.05.2010 / 22:07