A menos que usen el protocolo rsync, una transferencia rsync entre 2 equipos utiliza como capa de transporte a SSH, SSH por lo general va cifrado (y sin compresión) y siempre en el cifrado de mayor complejidad posible, lo cual, si tu CPU es lento, hará que las transferencias duren mucho.
¿cómo solucionarlo? fácil!, cambiando el cifrado.
SSH utiliza diversos algoritmos de cifrado (como 3DES o AES), a menos que tengas un CPU que soporte aceleración por hardware del cifrado AES (modernos CPU core i7 ó Xeon), usar un alto cifrado tiene un gran penalty en la velocidad de transferencia, en cambio, si es una conexión relativamente segura (desde tu portátil a otro equipo, ejemplo, una NAS en tu casa) usar un algoritmo inseguro puede ayudar a mejorar la velocidad de transferencia.
¿Cómo?, veamos.
Hay 2 cifrados bastante inseguros, pero muy rápidos de computar con hardware decente, uno es blowfish y el otro es arcfour (versiones de 128 y 256), mi equipo de pruebas es un:
En estas condiciones “promedio” ejecutamos el rsync:
He movilizado 1GB de información (un backup del sistema raíz) con el siguiente comando:
rsync -viHaAXv -S --recursive --progress --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* root@192.168.1.8:/opt/installer/appliance
Y este es el tiempo:
sent 1,137,165,129 bytes received 830,145 bytes 2,661,977.25 bytes/sec total size is 1,134,756,293 speedup is 1.00
real 7m6.843s user 0m28.400s sys 0m10.204s
2.6MBps fueron transferidos en 7 minutos.
Ahora, usando arcfour128:
rsync -viHaAXv -S --recursive --progress -e "ssh -T -c arcfour128 -o Compression=yes -x" --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* root@192.168.1.8:/opt/installer/appliance
sent 1,137,202,567 bytes received 830,277 bytes 4,832,411.23 bytes/sec total size is 1,134,794,587 speedup is 1.00
real 3m55.097s user 2m16.032s sys 0m14.868s
Esto es una tasa de transferencia de 4.8Mbps, que movieron 1GB de datos en 3,55 minutos, esto es un 90% de mejora en la velocidad!
Mis condiciones, no son tus condiciones, por lo que hacer un juicio “objetivo” sobre usar arcfour128, o blowfish, o AES si tu CPU lo soporta, lo mejor es que pruebes “tú mismo”, para ello tienes este pequeño script bash que te ayudará:
Crea un archivo de 50MB:
dd if=/dev/zero of=/opt/test-file bs=1M count=50
Y ejecutas este script:
#!/bin/sh for cipher in aes128-ctr aes192-ctr aes256-ctr arcfour256 arcfour128 aes128-cbc 3des-cbc blowfish-cbc cast128-cbc aes192-cbc aes256-cbc arcfour ; do echo "$cipher" for try in 1 2 ; do time rsync -viHaAXS -e "ssh -T -c $cipher -o Compression=yes -x" /opt/test-file USER@IP-DESTINATION done done
Y podrás obtener cuánto dura una transferencia de uno destino a otro con los cifrados soportados por openSSH.
Me complace anunciar la creación de esta útil herramienta (SquidStats), para el análisis y monitoreo…
La inteligencia artificial está revolucionando las industrias al automatizar tareas, predecir patrones y permitiendo tomar…
Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…
Percona Monitoring and Management (PMM) es una herramienta de código abierto para la supervisión y…
Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…
Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…