O que o sinalizador '-C' faz exatamente em 'scp'?

19

Sempre uso rsync ou scp para copiar o arquivo de / para uma máquina remota. Recentemente, descobri no manual de scp ( man scp ) o sinalizador -C

 -C      Compression enable.  Passes the -C flag to
         ssh(1) to enable compression.

Antes de descobrir esse sinalizador, costumava usar zip e scp .

É tão eficiente usar apenas o -C do que compactar e descompactar? Quando está usando um ou outro processo, a transferência é mais rápida?

    
por Remi.b 27.07.2015 / 19:33

3 respostas

15

Nunca vai fazer muita diferença, mas compactar o arquivo antes de copiá-lo deve ser um pouco menos eficiente, pois usar um formato de contêiner como zip que pode encapsular vários arquivos (como tar ) é desnecessário e não é possível fazer stream de entrada e saída zip (assim você precisa de um arquivo temporário).

Usar gzip , por outro lado, em vez de zip deve ser exatamente o mesmo, pois é o que ssh -C faz sob o capô ... exceto que gzipar é mais trabalho do que usar ssh -C .

    
por 27.07.2015 / 19:40
11

O sinalizador -C ativa uma compactação gzip de um fluxo SSH.

É um equivalente de Accept-Encoding: gzip em HTTP.

Como o sinalizador é executado depende de um tipo de dado que você transfere:

  • Ao transferir um único arquivo grande, o desempenho seria quase o mesmo para 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 troca de metadados de arquivo, como registro de data e hora e permissões). Então ambos os lados têm que esperar um pouco para que o outro lado responda (a compressão não ajudará enquanto espera). Isso é um tempo perdido para cada arquivo transferido. Quanto tempo é gasto 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.

por 28.07.2015 / 08:30
8

Permite a compressão gzip em ssh (sob o scp).

Em conexões lentas isso acelerará as coisas, em qualquer conexão razoavelmente rápida (100Mbit ou mais rápida), a compressão provavelmente atrasará as coisas.

Será mais ou menos eficiente que o zip com base no fato de o gzip (especificamente gzip -6) ser mais ou menos eficiente que o nível de compactação zip escolhido por você

    
por 27.07.2015 / 19:42