
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 rsync
haben eine --time-limit=MINS
Option. Sie sagen, dass die Verbindung wackelig ist, sodass Sie sowieso eine Schleife durchlaufen müssen. Mein Vorschlag wäre, trickle
die Verbindungsgeschwindigkeit zu verwalten und rsync
unabhä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 rsync
fü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-limit
Wenn diese Option auf Ihrem nicht verfügbar ist rsync
, können Sie mit dem Dienstprogramm praktisch dasselbe tun timeout
.
timeout 60m trickle ... rsync ...