¿Por qué es rsync -avz más rápido que scp -r?

55

Estoy un poco confundido por esto? ¿Por qué rsync es más rápido que scp? ¿Rsync no usa scp debajo o hace algo más eficiente? ¿Hay alguna forma de acelerar scp?

grm
fuente
1
Es una copia nueva.
grm

Respuestas:

68

Rsync obviamente será más rápido que scp si el destino ya contiene algunos de los archivos fuente, ya que rsync solo copia las diferencias. Pero sospecho que su pregunta era sobre hacer una copia directa a un objetivo vacío.

Has pasado la -zopción a rsync; Esto activa la compresión. Si el ancho de banda de la red es el factor limitante (a menudo lo es), la compresión puede mejorar la velocidad de transferencia en una cantidad notable.

También puede habilitar la compresión scpal pasar la -Copción. Esto debería incluso igualar las cosas con rsync. La compresión no está habilitada por defecto en ssh porque ahorra ancho de banda pero agrega latencia y sobrecarga de la CPU; la latencia es mala para sesiones interactivas (esto no se aplica a scp), y la sobrecarga de la CPU es inútil si los archivos que está copiando ya están comprimidos.

Las versiones anteriores de rsyncrsh utilizado en lugar de ssh como la capa de transporte predeterminada, por lo que una comparación justa sería entre rsyncy rcp. Pero ssh ha sido el valor predeterminado desde 2.6.0 lanzado el 01-01-2004.

Con los ajustes de compresión idénticas, esperaría rsyncy scpque tienen esencialmente la misma velocidad. Comparta puntos de referencia si encuentra lo contrario.

Gilles 'SO- deja de ser malvado'
fuente
3
Agradable, el uso de -C hizo que mi velocidad de transferencia aumentara de 5 MB a 20 MB
2014
Acabo de probar eso para un directorio que contiene 16 archivos de alrededor de 3-9 MB y rsync -ztodavía es MUCHO más rápido que scpcon cualquier compresión sugerida en estas respuestas habilitada. También es más rápido que comprimir y archivar en un archivo manualmente e incorporar scpese archivo ( scpcon compresión es aún más lento que eso). Entonces, la pregunta del OP en realidad sigue sin respuesta: ¿con scpqué es tan lento en comparación con rsync?
ohcibi
12

prueba scp de forma rápida

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .

estas opciones aceleran scp 5 veces en mi configuración en comparación con la máquina scp simple: archivo.

Actualización 2017

En realidad, scp es lento debido a la mala gestión de los detalles de TCP, como MTU y el tamaño del búfer. Afortunadamente, esto ha sido solucionado por el proyecto HPN SSH . Según tengo entendido, puede usar HPN SSH como transporte para rsync.

Peter K
fuente
1
¡¡Genial gracias!! Sin embargo, siempre lo hace scp -p(conservar fecha / hora) como predeterminado, y probablemente -r(recursivo) scp -pr -C .... (Solo tuve que restregar y reiniciar un trabajo scp de 40 Gb usando estos porque olvidé el -p)
smci
Agregué -p al comando, gracias por una pista.
Peter K
4

Solía ​​ser al revés, pero creo que la velocidad de rsync ha mejorado mucho en las últimas revisiones. También depende de cuántos archivos esté copiando. Si es mucho, rsync generalmente será más rápido porque scp genera un nuevo proceso para cada archivo que está copiando. Puede intentar debilitar el cifrado que usa scp para ver si se acelera. Lo último que recuerdo es que la cifra del arco iris fue la más rápida.

churnd
fuente
2
Scp en realidad no genera un nuevo proceso para cada archivo que se copia. Tiene un proceso en el lado de envío y otro en el lado de recepción, al igual que con rsync.
Kenster
3

Para una gran cantidad de archivos pequeños, rysnc es mucho más rápido que scp. Dicen que es porque tiene una sobrecarga más pequeña. Para un archivo grande, esperaría resultados similares.

sencer
fuente
3

Para mis pruebas, rsync es más rápido que scp , puede usar iotop para probarlas al transferir el mismo archivo:

sudo iotop -o

Tal vez obtendrá un resultado diferente, pero puede probarlos usted mismo. Por cierto, mientras usa scp , no olvide elegir su cifrado:

scp -c arcfour <source> <dest>

Mientras arcfourpuede acelerar el cifrado.

coanor
fuente
0

¿Estás re-copiando archivos sobre los existentes? Si es así, la capacidad de rsync para bloquear comparar y solo copiar las diferencias será relevante.

Linker3000
fuente