Ajuste la velocidad máxima de descarga de rsync mientras se ejecuta

Ajuste la velocidad máxima de descarga de rsync mientras se ejecuta

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 rsynctienen una --time-limit=MINSopció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 tricklepara gestionar la velocidad de conexión y forzar un reinicio rsynccada 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á rsyncdurante 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-limitopción en tu rsync, puedes hacer lo mismo con la timeoututilidad.

timeout 60m trickle ... rsync ...

información relacionada