Eu sempre uso um rsync
ou scp
para copiar arquivos de / para uma máquina remota. Recentemente, descobri no manual da scp
( man scp
) bandeira-C
-C Compression enable. Passes the -C flag to
ssh(1) to enable compression.
Antes de descobrir essa bandeira, eu costumava zip
antes e depois scp
.
É tão eficiente usar apenas o -C
que fechar e descompactar? Quando o uso de um ou outro processo agiliza a transferência?
scp
compression
file-transfer
Remi.b
fonte
fonte
scp -rv
escp -Crv
para comparar a taxa de transferência.zip
é um formato de arquivo muito "windows". Você quase nunca verá ou precisará disso ao operar uma máquina linux com software linux nativo.tar
é usado para enrolar diretórios em um arquivo, preservando permissões e nomes e tal, enquantogzip
,bzip2
,xz
, etc são usados para arquivos compressa.tar
s são freqüentemente compactados, criandotar.gz
etar.xz
formatos comuns para arquivos no linux. Eu já vi pessoas rolando suas própriasscp
práticas com comandos comotar cvz directory | ssh machine 'cd somewhere; tar xz'
.Compression yes
no seu.ssh/config
arquivo.Respostas:
Isso nunca fará muita diferença, mas compactar o arquivo antes de copiá-lo deve ser um pouco menos eficiente, pois o uso de um formato de contêiner como o
zip
que pode encapsular vários arquivos (comotar
) é desnecessário e não é possível transmitir o arquivo zip entrada e saída (então você precisa de um arquivo temporário).Usando,
gzip
por outro lado, em vez dezip
deveria ser exatamente o mesmo, já que é o quessh -C
acontece sob o capô ... exceto que zíper a si mesmo é mais trabalho do que apenas usarssh -C
.fonte
gzip
é. Sua resposta significa que essascp -rC
é provavelmente a solução mais eficiente que eu tenho?-C
compacta um fluxo de protocolo interativo. Você considera apenas os dados. Portanto, suas conclusões estão erradas. Veja minha respostaO
-C
sinalizador permite uma compactação gzip de um fluxo SSH.É o equivalente
Accept-Encoding: gzip
em HTTP.O desempenho do sinalizador depende de um tipo de dados que você transfere:
Ao transferir um único arquivo grande, o desempenho seria quase o mesmo de compactar o arquivo antes da transferência (negligenciando a eficiência do algoritmo zip vs. gzip).
Mas usar
-C
é um esforço menor para você como usuário.Ao transferir muitos arquivos pequenos, o desempenho será inferior ao compactar os arquivos antes da transferência.
Uma razão por trás disso é que, antes de cada transferência de arquivo, há uma comunicação interativa entre o servidor SCP e o cliente (para a troca de metadados do arquivo, como registro de data e hora e permissões). Portanto, ambos os lados precisam esperar um pouco para que o outro lado responda (a compactação não ajudará enquanto espera). Esse é um tempo perdido para cada arquivo transferido. Quanto tempo é desperdiçado depende da latência da conexão. No final, a transferência pode ser magnitudes mais lentas.
Quando você transfere um único arquivo compactado, essa comunicação ocorre apenas uma vez.
fonte
Permite a compactação gzip no ssh (sob o scp).
Em conexões lentas, isso acelera as coisas, em qualquer conexão razoavelmente rápida (100Mbit ou mais rápida) é muito provável que a compactação diminua a velocidade.
Será mais ou menos eficiente que o zip, com base no fato de o gzip (especificamente o gzip -6) ser mais ou menos eficiente que o nível de compactação do zip escolhido
fonte
.bin
e.txt
arquivos). Então você sugeriria usar apenasscp -r
sem-C
bandeira e nãozip
,gzip
nãotar
?