実行時のrsyncの最大ダウンロード速度の調整

実行時のrsyncの最大ダウンロード速度の調整

不安定な接続を介して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であるため、rsync1時間の間は最高速度で再起動します。事実上、これは予想より1時間遅い午前8時までにより多くの帯域幅を使用します。

必要な帯域幅制限に合わせて上限/下限値を変更してください。毎秒KB(キロバイト)単位で測定されるため、より一般的なインターネット接続速度(Mb)から変換するには、適切な係数10に調整する必要があります。 1Mb/s = 1000Kb/s = 100KB/s です。

--time-limitコンピュータにそのオプションがない場合は、このユーティリティを使用してほぼ同じことを実行rsyncできます。timeout

timeout 60m trickle ... rsync ...

おすすめ記事