15 votos

Cómo acelerar la velocidad de rsync para archivos pequeños

Estoy tratando de transferir miles de pequeños archivos de un servidor a otro mediante el siguiente comando:

rsync -zr --delete /home/user/ user@10.1.1.1::backup

En la actualidad la transferencia tarda mucho tiempo (yo no lo he cronometrado). ¿Hay manera de hacer esto más rápido? Debo utilizar otra herramienta? Debo estar usando rsync sobre ssh en lugar de utilizar el protocolo rsync?

13voto

Mark Wagner Puntos 11107

Usted necesita para determinar el cuello de botella. No es rsync. Probablemente no es su ancho de banda de red. Como Zoredache sugiere que es más probable que la enorme cantidad de iops generado por todas las llamadas a stat (). Cualquier herramienta de sincronización va a necesitar a stat de los archivos. Si bien la sincronización de ejecutar iostat a verificar.

Así que la pregunta es: ¿cómo puedo optimizar stat? Dos respuestas fáciles: 1. obtener un subsistema de disco más rápido (en ambos hosts, si es necesario) y 2. ajusta tu sistema de archivos (por ejemplo, para ext3 monte con noatime y añadir un dir_index).

Si por alguna casualidad no es de su disco de iops que es el límite, entonces usted podría experimentar con la división de la dir árbol en varios distintos árboles y ejecutar múltiples rsyncs.

5voto

unutbu Puntos 141

La compresión no es muy útil para archivos pequeños (digamos, menos de 100 bytes). Para archivos pequeños, a veces la versión comprimida puede ser incluso más grande que la original. Pruebe el rsync comando sin el -z bandera.

ssh es bueno para la seguridad, pero no va a hacer la transferencia más rápida. De hecho, sería hacer el traslado más lento debido a la necesidad para el cifrado/descifrado.

rsync puede no parecer rápido la primera vez que se ejecuta, porque hay una gran cantidad de datos a transferir. Sin embargo, si usted planea en la ejecución de este comando periódicamente, las siguientes veces puede ser mucho más rápido, ya rsync es inteligente no la transferencia de archivos que no han cambiado.

1voto

devicenull Puntos 4709

¿Qué versión de rsync estás usando? Nada más, a continuación, 3.0.0 (en ambos extremos) no tiene el incremento de filelist característica, lo que acelera la transferencia de grandes cantidades.

1voto

Alex F Puntos 343

Agregar -v --progress de su comando rsync línea

rsync se realiza en 2 pasos:

  1. profundo examinar todos los archivos en ambas plataformas para comparar su tamaño y mdate
  2. hacer la transferencia real

Si usted está rsync miles de pequeños archivos en directorios anidados, puede ser simplemente que rsync pasa la mayor parte de este tiempo va en subdirectorios y encontrar todos los archivos

Si el tiempo no pase para la navegación, el tiempo puede simplemente debido a la adición de todas las latencias el inicio de cada nueva transferencia de archivos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: