Siempre uso cualquiera rsynco scppara 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 zipantes y después scp.
¿Es tan eficiente usar solo la -Ccompresió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 -rvyscp -Crvpara comparar el rendimiento.zipes un formato de archivo muy "windows". Casi nunca lo verá ni lo necesitará cuando opere una máquina Linux con software nativo de Linux.tarse utiliza para enrollar directorios en un solo archivo, preservando permisos y nombres y tal, mientras quegzip,bzip2,xz, etc se utilizan para comprimir archivos.tars se comprimen, lo que hacetar.gzytar.xzformatos comunes de archivos en Linux. He visto a personas rodar su propioscptrabajo con comandos comotar cvz directory | ssh machine 'cd somewhere; tar xz'.Compression yessu.ssh/configarchivo.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
zipese 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
gzipotro lado, usarlo en lugar dezipdebería ser exactamente lo mismo, ya que es lo quessh -Chace debajo del capó ... excepto que tragarse es más trabajo que simplemente usarlossh -C.fuente
gzipes. ¿Su respuesta significa que esascp -rCes probablemente la solución más eficiente que tengo?-Ccomprime un flujo de protocolo interactivo. Solo considera los datos. Entonces tus conclusiones están equivocadas. Ver mi respuestaEl
-Cindicador permite una compresión gzip de una secuencia SSH.Es un equivalente de
Accept-Encoding: gzipen 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
-Ces 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
.biny.txtarchivos). ¿Entonces sugeriría simplemente usarscp -ry sin-Cbandera y nozip,gzipnotar?