私はUbuntu 20.04を使用しており、次のbashスクリプト/ rsyncを使用してsshを介してリモートサーバーのrsync-daemonに接続しています。
欠点は、ssh経由のrsyncを使用するとサーバー負荷も発生するため、サーバー負荷の問題を克服するために、以下のようにionice値を追加しました。ロードはもはや問題になりません。
私の問題は、ioniceの値によってssh接続が不安定になるようです。これはsshが接続を切断して再接続するため、私のログイン通知スクリプトが100万の電子メールを送信することです。
負荷の問題に対するより良い解決策を見たり、SSH接続を確実に維持する方法を知っている人はいますか?
#!/bin/bash
while [ 1 ]
do
rsync -avzxP --delete --checksum --append-verify --timeout=180 --bwlimit=48 --rsync-path="sudo ionice -c 3 rsync" --log-file=/var/log/rsync.log --exclude 'var-logs' --password-file=/etc/rsyncd.passwd -e "ssh -l backups" XXX.XX.XXX.XX::backup-data /media/username/WebMade/Server-Backups/Prod/today/
if [ "$?" = "0" ] ; then
echo "rsync completed normally"
exit
else
echo "Rsync failure. Backing off and retrying..."
sleep 10
fi
done
#EOF
ベストアンサー1
このrsyncコマンドを使用すると、リモートコンピュータからローカルコンピュータにファイルをインポートできます。
この-z
オプションを使用するには、リモートコンピュータのrsyncデーモンがネットワーク経由で送信されたファイルデータをローカルのrsyncに圧縮する必要があります(ローカルのrsyncがデータをファイルに書き込む前にデータを解凍する場合)。ionice
このオプションで指定された値は、リモート--rsync-path
コンピュータ上のrsyncプロセスのディスクI / O優先順位を下げます。
コンピュータのディスクからファイルを読み取るプロセスは、通常、ディスクが非常に遅くない限り、コンピュータに大きな負荷をかけないため、ionice
リモートコンピュータの負荷を軽減するのに役立ちません。データ圧縮の場合、圧縮を実行するプロセスは通常コンピュータに大きなCPU負荷を追加し、データ圧縮を解除するプロセスは小さなCPU負荷のみを追加します。--bwlimit
このオプションは、ファイル転送が両方のコンピュータ間のネットワーク帯域幅を消費しますが、一般的に混雑したネットワークは、両方のコンピュータで追加の負荷として表示されない場合に便利です。
-z
私の経験によれば、コンピュータ間のネットワーク接続がLAN上で高速で動作する場合、または最も近代的な「高速」インターネットを介して自宅に接続されている場合、rsyncにネットワーク(オプション)を介して送信されるデータを圧縮するように要求することはあまり役に立ちません。ではありません。ファイルの転送にかかる時間を減らすためにできることはほとんどまたはまったくありませんが、送信側ではCPUの消費量が高くなります。
これに基づいて、オプションを削除することをお勧め--bwlimit
します。最後の問題は、解決しようとしたサーバーの負荷を引き起こす可能性が高いです。--rsync-path
-z