
Necesito realizar una descarga entre dos máquinas Linux a través de una conexión inestable. Rsync parece ser la mejor herramienta, pero la cuestión es que quiero aumentar el límite de velocidad de ancho de banda en este proceso durante la noche. ¿Cómo puedo hacer eso?
¿Alguna buena sugerencia sobre cómo hacer esto? Me parece que la mejor idea es tener un script bash que se elimine en momentos específicos y luego se reinicie con un script que verifique el tiempo y ajuste el límite de velocidad.
Podemos asumir que hay muchos rsyncs ejecutándose todo el tiempo, por lo que killall rsync no funcionará.
Respuesta1
Las versiones recientes de rsync
tienen una --time-limit=MINS
opción. Dices que la conexión es inestable, por lo que tendrás que realizar un bucle de todos modos. Mi sugerencia sería utilizar trickle
para gestionar la velocidad de conexión y forzar un reinicio rsync
cada hora independientemente de su estado.
#!/bin/bash
#
while :
do
# Evening? Or day?
time=$(date +%H%M)
if [[ ${hour#0} -gt 2200 || ${hour#0} -lt 700 ]]
then
# After 10pm and before 7am
up=100 down=10 # 100 KB/s up and 10 KB/s down
else
up=10 down=1 # 10 KB/s up and 1 KB/s down
fi
trickle -s -u $up -d $down -t 10 rsync -avzP --time-limit=60 /path/to/source/ remote:/path/to/destination/ && break
# Take a breather
sleep 60
done
Recuerde que en este ejemplo, si se vuelve a verificar la hora a las 06:59, la hora sigue siendo las 6, por lo que aún se reiniciará rsync
durante una hora a máxima velocidad. Efectivamente, esto le permitirá utilizar su mayor ancho de banda hasta las 8 a.m., potencialmente una hora más tarde de lo esperado.
Corrija los valores arriba/abajo para que coincidan con sus restricciones de ancho de banda preferidas. Están en KB (kilobytes) por segundo, por lo que deberás ajustarlas con el factor apropiado de 10 para convertir las velocidades de conexión a Internet más típicas en Mb. Tenga en cuenta que 1 Mb/s = 1000 Kb/s = 100 KB/s.
Si no tienes la --time-limit
opción en tu rsync
, puedes hacer lo mismo con la timeout
utilidad.
timeout 60m trickle ... rsync ...