Siempre uso cualquiera rsync
o scp
para copiar archivos desde / a una máquina remota. Recientemente, descubrí en el manual de scp
( man scp
) la bandera-C
-C Compression enable. Passes the -C flag to
ssh(1) to enable compression.
Antes de descubrir esta bandera, solía hacerlo zip
antes y después scp
.
¿Es tan eficiente usar solo la -C
compresión y descompresión? ¿Cuándo está utilizando uno u otro proceso hacer que la transferencia sea más rápida?
scp
compression
file-transfer
Remi.b
fuente
fuente
scp -rv
yscp -Crv
para comparar el rendimiento.zip
es un formato de archivo muy "windows". Casi nunca lo verá ni lo necesitará cuando opere una máquina Linux con software nativo de Linux.tar
se utiliza para enrollar directorios en un solo archivo, preservando permisos y nombres y tal, mientras quegzip
,bzip2
,xz
, etc se utilizan para comprimir archivos.tar
s se comprimen, lo que hacetar.gz
ytar.xz
formatos comunes de archivos en Linux. He visto a personas rodar su propioscp
trabajo con comandos comotar cvz directory | ssh machine 'cd somewhere; tar xz'
.Compression yes
su.ssh/config
archivo.Respuestas:
Realmente nunca hará una gran diferencia, pero comprimir el archivo antes de copiarlo debería ser un poco menos eficiente ya que usar un formato de contenedor como
zip
ese puede encapsular múltiples archivos (comotar
) es innecesario y no es posible transmitir zip entrada y salida (por lo que necesita un archivo temporal).Por
gzip
otro lado, usarlo en lugar dezip
debería ser exactamente lo mismo, ya que es lo quessh -C
hace debajo del capó ... excepto que tragarse es más trabajo que simplemente usarlossh -C
.fuente
gzip
es. ¿Su respuesta significa que esascp -rC
es probablemente la solución más eficiente que tengo?-C
comprime un flujo de protocolo interactivo. Solo considera los datos. Entonces tus conclusiones están equivocadas. Ver mi respuestaEl
-C
indicador permite una compresión gzip de una secuencia SSH.Es un equivalente de
Accept-Encoding: gzip
en HTTP.El rendimiento del indicador depende de un tipo de datos que transfiera:
Al transferir un solo archivo grande, el rendimiento sería casi el mismo que comprimir el archivo antes de la transferencia (descuidando la eficiencia del algoritmo zip vs gzip).
Pero usar
-C
es un esfuerzo menor para usted como usuario.Al transferir muchos archivos pequeños, el rendimiento será inferior a comprimir los archivos antes de la transferencia.
Una razón detrás de eso es que antes de cada transferencia de archivos, hay una comunicación interactiva entre el servidor SCP y el cliente (para intercambiar metadatos de archivos, como la marca de tiempo y los permisos). Entonces, ambos lados tienen que esperar un poco para que el otro lado responda (la compresión no ayudará mientras se espera) Es un tiempo perdido para cada archivo transferido. La cantidad de tiempo perdido depende de la latencia de la conexión. Al final, la transferencia puede ser de magnitud más lenta.
Cuando transfiere un solo archivo comprimido, esa comunicación ocurre solo una vez.
fuente
Permite la compresión gzip en ssh (debajo del scp).
En conexiones lentas esto acelerará las cosas, en cualquier conexión razonablemente rápida (100Mbit o más rápido) es muy probable que la compresión desacelere las cosas.
Será más o menos eficiente que zip en función de si gzip (específicamente gzip -6) sería más o menos eficiente que el nivel de compresión zip elegido
fuente
.bin
y.txt
archivos). ¿Entonces sugeriría simplemente usarscp -r
y sin-C
bandera y nozip
,gzip
notar
?