次の手順でうまくいきました:
<オール>rsync --dry-run
を実行します まず、影響を受けるファイルのリストを取得します。$ rsync -avzm --stats --safe-links --ignore-existing --dry-run \
--human-readable /data/projects REMOTE-HOST:/data/ > /tmp/transfer.log
cat transfer.log
の出力をフィードしましたparallel
まで 5rsync
を実行するために 次のように並行して:
$ cat /tmp/transfer.log | \
parallel --will-cite -j 5 rsync -avzm --relative \
--stats --safe-links --ignore-existing \
--human-readable {} REMOTE-HOST:/data/ > result.log
ここでは、--relative
オプション (リンク) は、影響を受けるファイルのディレクトリ構造が、ソースと宛先で同じままであることを保証します (/data/
内) ディレクトリ)、コマンドはソース フォルダー (例:/data/projects
) で実行する必要があります。 ).
私は個人的にこのシンプルなものを使用しています:
\ls -1 | parallel rsync -a {} /destination/directory/
これは、ほとんど空でないディレクトリがいくつかある場合にのみ役立ちます。そうしないと、ほとんどすべての rsync
を持つことになります 終了し、最後の 1 人がすべての仕事を 1 人で行います。
ls
の前のバックスラッシュに注意してください これにより、エイリアスがスキップされます。したがって、出力が希望どおりであることを確認します。
受け入れられた回答を使用しないことを強くお勧めします。より良い解決策は、最上位のディレクトリをクロールし、比例した数の rync 操作を開始することです。
大きな zfs ボリュームがあり、ソースは cifs マウントでした。どちらも 10G でリンクされており、一部のベンチマークではリンクが飽和する可能性があります。パフォーマンスは zpool iostat 1
を使用して評価されました .
ソースドライブは次のようにマウントされました:
mount -t cifs -o username=,password= //static_ip/70tb /mnt/Datahoarder_Mount/ -o vers=3.0
単一の rsync
を使用する プロセス:
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/ /StoragePod
IO メーターの読み取り値:
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.62K 0 130M
これは合成ベンチマーク (水晶ディスク) で、順次書き込みのパフォーマンスが 900 MB/秒に近づき、リンクが飽和していることを意味します。 130MB/s はあまり良くなく、週末と 2 週間待つことの違いです。
そこで、ファイル リストを作成し、再度同期を実行しようとしました (64 コアのマシンを使用しています):
cat /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount.log | parallel --will-cite -j 16 rsync -avzm --relative --stats --safe-links --size-only --human-readable {} /StoragePod/ > /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount_result.log
そして同じ性能でした!
StoragePod 29.9T 144T 0 1.63K 0 130M
StoragePod 29.9T 144T 0 1.62K 0 130M
StoragePod 29.9T 144T 0 1.56K 0 129M
別の方法として、単純にルート フォルダーで rsync を実行しました。
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/Marcello_zinc_bone /StoragePod/Marcello_zinc_bone
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/fibroblast_growth /StoragePod/fibroblast_growth
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/QDIC /StoragePod/QDIC
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/sexy_dps_cell /StoragePod/sexy_dps_cell
これにより、実際にパフォーマンスが向上しました:
StoragePod 30.1T 144T 13 3.66K 112K 343M
StoragePod 30.1T 144T 24 5.11K 184K 469M
StoragePod 30.1T 144T 25 4.30K 196K 373M
結論として、@Sandip Bhattacharyaが提起したように、ディレクトリを取得してそれを並列化するための小さなスクリプトを作成します。または、ファイル リストを rsync に渡します。ただし、ファイルごとに新しいインスタンスを作成しないでください。