Passen Sie die maximale Downloadrate von rsync während der Ausführung an

Passen Sie die maximale Downloadrate von rsync während der Ausführung an

Ich muss über eine wackelige Verbindung zwischen zwei Linux-Rechnern herunterladen. Rsync scheint das beste Tool zu sein, aber ich möchte die Bandbreitenbegrenzung für diesen Vorgang während der Nacht erhöhen. Wie kann ich das tun?

Gibt es gute Vorschläge, wie man das macht? Die beste Idee scheint mir ein Bash-Skript zu sein, das zu bestimmten Zeiten beendet und dann mit einem Skript neu gestartet wird, das die Zeit überprüft und das Geschwindigkeitslimit anpasst.

Wir können davon ausgehen, dass ständig viele Rsyncs ausgeführt werden, sodass „killall rsync“ nicht funktioniert.

Antwort1

Neuere Versionen rsynchaben eine --time-limit=MINSOption. Sie sagen, dass die Verbindung wackelig ist, sodass Sie sowieso eine Schleife durchlaufen müssen. Mein Vorschlag wäre, trickledie Verbindungsgeschwindigkeit zu verwalten und rsyncunabhängig vom Status stündlich einen Neustart zu erzwingen.

#!/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

Denken Sie daran, dass in diesem Beispiel, wenn die Zeit um 06:59 Uhr erneut überprüft wird, es immer noch 6 ist, sodass der Neustart rsyncfür eine Stunde mit voller Geschwindigkeit erfolgt. Dadurch kann der Server Ihre größere Bandbreite bis 8:00 Uhr nutzen, möglicherweise eine Stunde länger als erwartet.

Korrigieren Sie die Up-/Down-Werte so, dass sie Ihren bevorzugten Bandbreitenbeschränkungen entsprechen. Sie werden in KB (Kilobyte) pro Sekunde angegeben, Sie müssen also den entsprechenden Faktor 10 anpassen, um von den typischeren Internetverbindungsgeschwindigkeiten in Mb umzurechnen. Beachten Sie, dass 1 Mb/s = 1000 Kb/s = 100 KB/s.

--time-limitWenn diese Option auf Ihrem nicht verfügbar ist rsync, können Sie mit dem Dienstprogramm praktisch dasselbe tun timeout.

timeout 60m trickle ... rsync ...

verwandte Informationen