por que o scp é mais rápido que o rsync?

1

Eu sempre tive a impressão de que o rsync deveria ser pelo menos tão rápido quanto o scp. Mas aqui eu tenho um problema. Quando eu uso rsync -avr para copiar dados da máquina remota, recebo algo como 11 mb / s. Se eu usar scp no mesmo arquivo, recebo 28 mb / s.

Como assim? É um directiory com muitos arquivos, mas o maior deles é um único arquivo de 1 GB. Quero dizer, algo está errado com a conexão, deve ser 1 GBit e eu só tenho ~ 300 mbit, mas ainda assim, é estranho que o rsync seja muito mais lento aqui ...

Alguma sugestão? Thx.

    
por Pythoneer 19.02.2018 / 09:59

2 respostas

0

Uma diferença entre scp e rsync é que rsync verifica arquivos transferidos, enquanto scp não.

Na% man_de% manpage:

Note that rsync always verifies that each transferred file was correctly reconstructed on the receiving side by checking a whole-file checksum that is generated as the file is transferred, but that automatic after-the-transfer verification has nothing to do with this option’s before-the-transfer "Does this file need to be updated?" check.

Portanto, esta poderia ser uma fonte para uma diferença de desempenho.

    
por 19.02.2018 / 10:51
0

.. when it is transfering a large file it sticks around 11 mb/s.

sem conhecer, você poderia ter causado uma transferência parcial ao comparar as taxas de transferência, tornando a CPU um gargalo.

O rsync faz uma delta-transfer por padrão se ele vê um arquivo parcial no receptor (sobra do scp test?). O método "rolling checksum" para comparar o que precisa ser transferido terá seu preço na utilização da CPU no lado do Remetente.

Eu notei uma diminuição de 4 vezes na taxa de transferência em um grande arquivo binário parcial com uma CPU fraca como Remetente (Intel Atom ou instâncias de nuvem VM menores). Em máquinas maiores, a taxa de transferência permaneceu ativa após a varredura parcial do arquivo inicial, quando continuava. A diferença na taxa de transferência para a planície netcat deve ser a criptografia via ssh.

Explicitamente dizer ao rsync para não usar transferências parciais ( -W|--whole-file ) colocará as taxas de transferência no mesmo estádio novamente. Se necessário, --append é outra maneira de retomar uma transferência de arquivo interrompida sem causar uma transferência delta. get -a in sftp pode retomar um download também.

Veja a descrição da arquitetura do Rsyncs para mais explicações.

    
por 26.02.2018 / 00:10

Tags