非常に大きなデータセット(ペタバイト単位で測定)をHPCクラスタからストレージサーバーに移動する必要がありました。我々は、デバイス間の大容量通信リンクを持っています。しかし、ボトルネックは、個々のファイルを並列化できる高速転送ツールのようです(各個々のファイルのサイズはテラバイトなので)。
この点で、私は管理者権限を必要とせず、scpやrsyncよりもはるかに高速なツールを探しています。管理者権限なしでローカルにインストールできるツールがあれば、それも役に立ちます。私はこのリンクを見つけました(2台のコンピュータ間で大量のデータを転送する最速の方法は何ですか?)、netcatの方法について言及しましたが、うまくいくことはできませんでした。
参考までに、比較的少数の非常に大きなファイル(および多くの小さなファイル)をコピーしようとしています。
時間をかけて助けてくれてありがとう。
答え1
rsync
私は+を使用しましたparallel
:
- すべての大容量ファイルの識別
rsync
30~100個のファイルを並列に実行
次のようになります(テストされていません)。
cd src-dir
find . -type f -size +10000 |
parallel -j100 -X rsync -zR -Ha --inplace ./{} fooserver:/dest-dir/
切断された接続を処理するには、--append
forrsync
および--retries
forparallel を使用します。
parallel --retries 987 -j100 -X rsync -zR -Ha --append ./{} fooserver:/dest-dir/
ファイルソースが変更されていないとします。