Eu precisava transferir um arquivo vdisk de 20 GB KVM , armazenando o sistema de arquivos raiz de uma VM do CentOS 6.5, de um servidor de laboratório para outro. O tamanho do arquivo grande e o fato de eu ter compactado um arquivo vdisk para algumas centenas de mega-bytes me instintivamente ativaram a compactação, scp
mas fiquei surpreso ao ver uma velocidade de transferência bastante baixa. Então eu tentei bzip2
em combinação com ssh
e fiquei cat
surpreso. Aqui está o resumo dos métodos e da taxa de transferência média.
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 11 MB / s.bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img"
, 5 MB / s. Esse resultado ainda mais baixo levou à pesquisa na Internet.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
13 MB / s. Esse uso de-c arcfour
como foi sugerido em uma resposta em falha do servidor. Isso dificilmente ajudou. Por fim, desativei a compactação.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
23 MB / s.
A compressão não deveria ter sido mais rápida?
Edição: Eu não sei por que a questão foi votada. Eu pensei que há algo a ser aprendido aqui.
Depois de receber a ssh(1)
dica da página de manual do @sven, tentei alguns métodos alternativos de transferência de arquivos que não envolviam compactação, ambos com melhores resultados.
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img"
, 26 MB / s.nc -l 5678 > /mnt/vdisks/vm1-root.img
no receptor enc 192.168.161.62 5678 < vm1-root.img
no transmissor, 40 MB / s. A porta5678
é arbitrária e estava disponível.
Usar nc
acabou sendo o método de cópia mais rápido!
No passado, scp -C
funcionava muito bem sempre que eu pensava. Por exemplo, ao transferir syslogs ( /var/log/messages*
) de poucos GBs de tamanho. Uma taxa de transferência não compactada de algumas centenas de KB / s aumentaria para 1-2 MB / s. Este exemplo ocorre no caso de uma conexão lenta, como foi indicado na página do manual.
Eu tenho um caso em que, uma imagem vdisk recém-criada para uma partição de 20 GB tem um tamanho compactado de apenas 200 MB. Com uma taxa de transferência de cerca de 25 MB / s, poderíamos fazer a cópia em apenas 8 segundos, em vez de mais de 13 minutos! Claramente, scp
sem compactação é ineficiente nesse caso e scp -C
é ainda pior.
Acho que a principal lição aprendida aqui é que isso scp -C
deve ser pensado apenas como uma conveniência. Se um arquivo puder ser compactado significativamente, é melhor compactá-lo primeiro na origem, transferir o formulário compactado e finalmente descompactar no destino. As ferramentas que executam a compactação e descompactação rapidamente (por exemplo, pbzip2 ) serão de grande ajuda.