Speed up rsync

Written by

in

Hace un tiempo en Speed up rm, les conté como ejecutar en paralelo muchos rm’s para borrar muchos archivos. ¡Pues ahora les traigo lo contrario!

¿Qué pasa cuando quienes copiar muchos archivos o directorios que son muy grandes?  ¡Pues acá el paralelismo también nos ayuda!

Usualmente se usa rsync para este tipo de labores, pero cuando son muy grandes y muchos, esto se puede volver brutalmente lento.

Por ejemplo, si quisiéramos copiar todos los datos del un servidor mysql hacia el /var/lib/mysql/data de otro servidor podemos ejecutar algo como esto:

cd /var/lib/mysql/data
ls | xargs --max-procs=4 -I% rsync -avz % root@servidorDestino:$PWD/

Con esto, vamos a ejecutar 4 rsync’s en paralelo con 1 archivo o directorio cada uno (ya que -I implica –max-args=1), desde el servidor local al servidorDestino.

Notas:

  • En el servidor local, se debe bajar el servicio mysql primero, do’h!
  • Se asume que el directorio /var/lib/mysql/data está creado y vacio en el servidor de destino.
  • Se utilizó ssh para realizar la conexión.
  • La autenticación se realizó utilizando llave ssh. Esto es altamente recomendable, si no, por cada rsync deberán introducir una contraseña.

¡Ojalá les sirva!