あるUSBドライブから別の複数のドライブにファイルをコピーするbashスクリプトを作成しています。
現在、rsyncを使用してソースから単一のターゲットにコピーし、すべての出力ドライブを一度に1つずつ繰り返しています。
for line in $(cat output_drives_list); do
rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/
done
私はこのプロセスを最適化してUSB帯域幅の使用を最大化し、単一ドライブの書き込み速度でボトルネックを回避しようとしています。
rsyncと同じことができますが、複数の出力ディレクトリを使用して一度にすべての出力ドライブに書き込み、入力から一度だけ読み取ることはできますか?
私はこれらのいくつかがすでにシステムキャッシュによって処理されていると推測していますが、これは読み取り専用に最適化されています。
複数のrsyncプロセスを並列に実行すると、書き込み速度が最適化される可能性がありますが、読み取り速度が遅くなる可能性があるという懸念もあります。
並列にコピーするときは、単一の読み取りに気を付ける必要がありますか?
ベストアンサー1
テストすることはできませんが、バックグラウンドでより多くのプロセスを開始すると解決策になる可能性があります。
START=$(date +%s)
for line in $(cat output_drives_list); do
rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/ &
done
jobs # get a list of running jobs
wait # wait for all processes to complete
sync
echo It took: $(( $(date +%s)-START )) seconds
編集:date
「ベンチマーク」の言及の後に-stuffを追加しました。