不安定な接続を介して2つのLinuxシステム間でダウンロードする必要があります。 Rsyncが最高のツールだと思いますが、問題は夜にこのプロセスの帯域幅速度制限を増やしたいということです。どうすればいいですか?
これを行う方法について良い提案がありますか?私の考えに最適なアイデアは、特定の時間に終了したbashスクリプトを作成し、時間を確認して速度制限を調整するスクリプトで再起動することです。
常に多くのrsyncが実行されていると仮定できるため、killall rsyncは機能しません。
答え1
最新バージョンにはオプションがrsync
あります--time-limit=MINS
。接続が不安定で、とにかく迂回しなければならないと言いました。私の提案は、trickle
接続速度を管理し、rsync
状態に関係なく1時間ごとに強制的に再開することです。
#!/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
この例では、06:59に時間を再確認すると、時間はまだ6であるため、rsync
1時間の間は最高速度で再起動します。事実上、これは予想より1時間遅い午前8時までにより多くの帯域幅を使用します。
必要な帯域幅制限に合わせて上限/下限値を変更してください。毎秒KB(キロバイト)単位で測定されるため、より一般的なインターネット接続速度(Mb)から変換するには、適切な係数10に調整する必要があります。 1Mb/s = 1000Kb/s = 100KB/s です。
--time-limit
コンピュータにそのオプションがない場合は、このユーティリティを使用してほぼ同じことを実行rsync
できます。timeout
timeout 60m trickle ... rsync ...