He estado usando un rsync
script para sincronizar datos en un host con los datos en otro host. Los datos tienen numerosos archivos de pequeño tamaño que contribuyen a casi 1.2TB.
Para sincronizar esos archivos, he estado usando el rsync
comando de la siguiente manera:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
Los contenidos de proj.lst son los siguientes:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Como prueba, tomé dos de esos proyectos (8,5 GB de datos) y ejecuté el comando anterior. Al ser un proceso secuencial, tiene 14 minutos y 58 segundos para completar. Entonces, para 1.2TB de datos tomaría varias horas.
Si pudiera hacer varios rsync
procesos en paralelo (usando &
, xargs
o parallel
), me ahorraría tiempo.
Intenté con el siguiente comando con parallel
(después cd
de ir al directorio de origen) y tardé 12 minutos y 37 segundos en ejecutarse:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Esto debería haber tomado 5 veces menos tiempo, pero no fue así. Creo que me estoy equivocando en alguna parte.
¿Cómo puedo ejecutar múltiples rsync
procesos para reducir el tiempo de ejecución?
rsync
s es nuestra primera prioridad.
rsync
s en paralelo es el foco principal ahora.