Estoy ejecutando rsync para sincronizar un directorio en mi disco duro USB externo. Son unos 150 gigas de datos. Más de 50000 archivos, supongo.
Está ejecutando su primera sincronización en este momento, pero está copiando archivos a una velocidad de solo 1-5 MB / s. Eso parece increíblemente lento para un gabinete USB 2.0. Tampoco hay otras transferencias en el disco.
Estas son las opciones que utilicé:
rsync -avz --progress /mysourcefolder /mytargetfolder
Estoy ejecutando Ubuntu Server 9.10.
usb
ubuntu-9.10
usb-flash-drive
rsync
Jake Wilson
fuente
fuente
tar
comandos canalizados ocpio
.Respuestas:
Para la primera sincronización solo usa
rsync solo agrega gastos generales cuando el destino está vacío.
también ... la opción -z probablemente esté matando su rendimiento, no debería usarla si no está transfiriendo datos a través de un enlace lento.
fuente
rsync -avz --progress /mysourcefolder/ /mytargetfolder
o obtendrá una copia delmysourcefolder
interior enmytargetfolder
lugar de reflejar el contenidoSi está utilizando rsync con una red rápida o disco a disco en la misma máquina,
sin usar compresión -z
y usando --inplace
lo acelera al rendimiento de los discos duros o la red
la compresión usa mucha CPU
no usar in situ hace que el disco duro funcione mucho (usa un archivo temporal antes de crear el final)
la compresión y no usar in situ es mejor para hacerlo a través de Internet (red lenta)
NUEVO: Tenga en cuenta el destino ... si hay habilitada la "compresión" NTFS ... esto ralentiza severamente los archivos grandes (diría que 200MB +) rsync casi parece estancado, es causado por esto.
fuente
Usa la
-W
opción. Esto deshabilita las comparaciones delta / diff. Cuando el tiempo / tamaño del archivo difiere, rsync copia todo el archivo.También elimine la
-z
opción. Esto solo es útil para comprimir el tráfico de red.Ahora
rsync
debería ser tan rápido comocp
.fuente
-z
solo es útil para el tráfico de red de baja velocidad . Si su red es lo suficientemente rápida, ralentizará las cosas, ya que estará limitado por la CPU.-W
: "Este es el valor predeterminado cuando tanto el origen como el destino se especifican como rutas locales, pero solo si no hay una opción de escritura por lotes".Primero: la cantidad de archivos en este caso será un factor importante. Es un tamaño promedio de 3MB cada uno. Probablemente haya un cuello de botella io que influya en la velocidad en el caso del OP. Más aquí : es una lectura bastante seca, pero la imagen de portada lo vale.
Entonces, ¿usa rsync para copiar en un directorio vacío? Aquí hay algunas formas de acelerarlo:
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
: el primero> básicamente imprime un archivo con todo lo que normalmente vería, y el 2> se refiere a mensajes de error.Mi comando sería:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Si todo se veía bien, eliminaría "--dry-run" y lo dejaría pasar. A, X y E cubren atributos y permisos extendidos no cubiertos por -a, l es para enlaces blandos, H es para enlaces duros y h es para lectura humana.
La actualización de un directorio ya sincronizado en una unidad USB, o la misma unidad, o en una red, requerirá diferentes comandos rsync para maximizar la velocidad de transferencia.
Bonificación : aquí está la página de manual de rsync , y si desea probar la velocidad de su disco duro, bonnie ++ es una buena opción, y para la velocidad de su red, pruebe iperf .
* La publicación tiene casi diez años, pero a los motores de búsqueda les gusta, y la sigo viendo. Es una buena pregunta, y no creo que la respuesta principal a "cómo acelerar rsync" deba ser "usar cp en su lugar".
fuente
No dice qué distribución de tamaño tienen sus archivos. Si hay muchos archivos pequeños, esto reducirá la velocidad de transferencia general al aumentar la latencia del movimiento del cabezal tanto en las unidades de origen como de destino, ya que la herramienta abre nuevos archivos y el sistema operativo mantiene entradas de directorio y otros metadatos (como el diario del sistema de archivos si está utilizando diario de metadatos como ext3 / ext4 y NTFS (por defecto) actualizado durante la transferencia. Un proceso de copia de archivos solo "entrará en su ritmo" para objetos más grandes, cuando ocurra una simple transferencia masiva.
fuente
Definitivamente quieres probar rclone . Esto es una locura rápido:
$ tree / usr [...] 26105 directorios, 293208 archivos
$ sudo rclone sync / usr / home / fred / temp -P -L --transfers 64
Transferido: 17.929G / 17.929 GBytes, 100%, 165.692 MBytes / s, ETA 0s Errores: 75 (reintentar puede ayudar) Cheques: 691078/691078, 100% transferido: 345539/345539, 100% Tiempo transcurrido: 1m50.8s
Esta es una copia local desde y hacia un SSD LITEONIT LCS-256 (256GB).
Puede agregar --ignore-checksum en la primera ejecución para hacerlo aún más rápido.
fuente
Evitar
-z
/--compress
: la compresión solo cargará la CPU ya que la transferencia no se realiza a través de una red sino a través de la RAM.--append-verify
: reanudar una transferencia interrumpida. Esto suena como una buena idea, pero tiene el caso de falla peligrosa: cualquier archivo de destino del mismo tamaño (o mayor) que la fuente será IGNORADO. Además, comprueba el archivo completo al final, lo que significa que no se acelera significativamente--no-whole-file
al agregar un caso de falla peligrosa.Utilizar
-S
/--sparse
: convierte secuencias de nulos en bloques dispersos--partial
o-P
cuál es--partial --progress
: guarde los archivos parcialmente transferidos para reanudarlos en el futuro. Nota: los archivos no tendrán un nombre temporal, así que asegúrese de que nada más espere usar el destino hasta que se haya completado la copia completa.--no-whole-file
para que cualquier cosa que deba reenviarse use la transferencia delta. Leer la mitad de un archivo transferido parcialmente suele ser mucho más rápido que volver a escribirlo.--inplace
para evitar la copia de archivos (pero solo si nada está leyendo el destino hasta que se complete la transferencia completa)fuente