Por que o rsync -avz é mais rápido que o scp -r?

55

Estou um pouco intrigado com isso? Por que o rsync é mais rápido que o scp? O rsync não usa o scp abaixo ou faz algo mais eficiente? Existe alguma maneira de acelerar o scp?

grm
fonte
11
É uma cópia nova.
grm

Respostas:

68

O rsync obviamente será mais rápido que o scp se o destino já contiver alguns dos arquivos de origem, pois o rsync apenas copia as diferenças. Mas suspeito que sua pergunta tenha sido sobre fazer uma cópia direta para um alvo vazio.

Você passou a -zopção para rsync; isso ativa a compactação. Se a largura de banda da rede é o fator limitante (geralmente é), a compactação pode melhorar a velocidade de transferência em uma quantidade notável.

Você também pode ativar a compactação scppassando a -Copção Isso deve equilibrar as coisas com o rsync. Por padrão, a compactação não está ativada no ssh porque economiza largura de banda, mas adiciona latência e sobrecarga da CPU; a latência é ruim para sessões interativas (isso não se aplica a scp) e a sobrecarga da CPU é inútil se os arquivos que você está copiando já estiverem compactados.

As versões mais antigas do rsyncrsh usado, em vez do ssh, como a camada de transporte padrão, portanto, uma comparação justa seria entre rsynce rcp. Mas o ssh é o padrão desde o 2.6.0 lançado em 01-01-2004.

Com configurações de compactação idênticas, eu esperaria rsynce scpteria essencialmente a mesma velocidade. Por favor, compartilhe referências se você achar o contrário.

Gilles 'SO- parar de ser mau'
fonte
3
Bom, usando -C fez minha velocidade de transferência aumentando de 5 MB para 20 MB
ıɾuǝʞ
Acabei de testar isso para um diretório que contém 16 arquivos em torno de 3 a 9 MB e rsync -zainda é MUITO MAIS rápido do que scpcom qualquer compactação sugerida nessas respostas ativadas. Também é mais rápido do que compactar e arquivar em um arquivo manualmente e scpinseri-lo ( scpa compactação é ainda mais lenta que isso). Portanto, a questão do OP realmente permanece sem resposta: o que é scptão lento em comparação com rsync?
20917 ohcibi
12

tente scp de maneira rápida

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .

essas opções aceleram o scp 5 vezes em minha configuração, em comparação com o arquivo scp machine: file.

Atualização, 2017

Na verdade, o scp é lento devido ao gerenciamento inadequado dos detalhes do TCP, como MTU e tamanho do buffer. Felizmente, isso foi corrigido pelo projeto HPN SSH . No meu entender, você pode usar o HPN SSH como um transporte para o rsync.

Peter K
fonte
11
Incrível, obrigado !! No entanto, sempre faça scp -p(preservar data / hora) como padrão e provavelmente -r(recursivo) scp -pr -C .... (Eu apenas tive que esfregar e reiniciar o trabalho de um 40Gb scp usando estes porque eu esqueci a -p)
SMCI
Eu adicionei -p ao comando, obrigado por uma dica.
Peter K
4

Costumava ser o contrário, mas acredito que a velocidade do rsync melhorou bastante nas últimas revisões. Também depende de quantos arquivos você está copiando. Se for muito, o rsync geralmente será mais rápido porque o scp gera um novo processo para cada arquivo que você está copiando. Você pode tentar enfraquecer a cifra que o scp usa para ver se ela acelera. Por último, lembro que a cifra de arco e quatro foi a mais rápida.

churnd
fonte
2
O Scp não gera um novo processo para cada arquivo que está sendo copiado. Você tem um processo no lado de envio e outro no lado de recebimento, assim como no rsync.
Kenster
3

Para um grande número de arquivos pequenos, o rysnc é muito mais rápido que o scp. Eles dizem que é porque tem uma sobrecarga menor. Para um arquivo grande, eu esperaria resultados semelhantes.

sencer
fonte
3

Para meus testes, o rsync é mais rápido que o scp , você pode usar o iotop para testá-los na transferência do mesmo arquivo:

sudo iotop -o

Talvez você obtenha resultados diferentes, mas você mesmo pode testá-los. BTW, enquanto estiver usando scp , não foge para escolher sua cifra:

scp -c arcfour <source> <dest>

Enquanto arcfourpode acelerar a criptografia.

coanor
fonte
0

Você está copiando novamente os arquivos sobre os existentes? Nesse caso, a capacidade do rsync de bloquear a comparação e copiar apenas as diferenças será relevante.

Linker3000
fonte