web-dev-qa-db-ja.com

小さなファイル5TB、+ Mの小さなファイルのRsync巨大なデータセット

アプリサーバーの設定ミスにより、各ディレクトリに多数の小さなファイルが含まれる約5TBのデータセットが作成される状況に遭遇しました。ファイルの転送とアプリケーションの変更を行っていますが、rsyncはデータの転送に失敗します。ローカルドライブ間のローカルでも失敗します。 3.5Gだけを一晩でコピーできました! rsyncスイッチを変更しようとしましたが、まだうまくいきません。進行状況の表示なしで現在サーバー上で実行されているものは次のとおりです。誰かがファイルを転送する方法を提案できますか?助けてくれてありがとう

6
h.safe

Xargs + rsyncを試してください:

 find . -type f -print0 | xargs -J % -0 rsync -aP % user@Host:some/dir/

-nを使用して、rsyncの各呼び出しにソースとして渡すファイルの数を制御できます。すべてのrsyncで200ファイルをコピーするには:

 find . -type f -print0 | xargs -n 200 -J % -0 rsync -aP % user@Host:some/dir/

遅すぎる場合は、-Pオプションを指定してrsyncの複数のコピーを並行して実行できます。

find . -type f -print0 | xargs -P 8 -n 200 -J % -0 rsync -aP % user@Host:some/dir/

これにより、rsyncの8つのコピーが並行して開始されます。

3
Luca Gibelli

これが信頼できる/安全なネットワークであり、ターゲットホストのポートを開くことができる場合、別のマシンでツリーを再現する良い方法は、tarとnetcatの組み合わせです。私はターミナルにいないので、完全なデモを書くことはできませんが、このページはかなり良い仕事をします:

http://toast.djw.org.uk/tarpipe.html

必ず圧縮を使用してください。最良のケースでは、3つの潜在的なボトルネック(ソースでの読み取り、ネットワークでの読み取り、ターゲットでの書き込み)のうち最も遅いスループット速度でデータを転送できます。

2
Jonah Benton

サーバーOSを指定しない-robocopyを検討しましたか?そのWindowsベースです。スレッド化、再試行、および帯域幅制限をサポートします。 UNCからUNCに対応。 RoboCopy docs

rsyncのクイックgoogleはunix/windowsを示しています...多分あなたはwindowsを使っています。

0
Alocyte

ZFSがある場合は、ZFSレベルのレプリケーションを使用して、ファイルシステムを新しい宛先に送信できます。

これがオプションではない場合は、UDR + rsyncを検討してください。詳細は以下のとおりです。 大量の小さなファイルを転送する

0
ewwhite