アプリサーバーの設定ミスにより、各ディレクトリに多数の小さなファイルが含まれる約5TBのデータセットが作成される状況に遭遇しました。ファイルの転送とアプリケーションの変更を行っていますが、rsyncはデータの転送に失敗します。ローカルドライブ間のローカルでも失敗します。 3.5Gだけを一晩でコピーできました! rsyncスイッチを変更しようとしましたが、まだうまくいきません。進行状況の表示なしで現在サーバー上で実行されているものは次のとおりです。誰かがファイルを転送する方法を提案できますか?助けてくれてありがとう
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つのコピーが並行して開始されます。
これが信頼できる/安全なネットワークであり、ターゲットホストのポートを開くことができる場合、別のマシンでツリーを再現する良い方法は、tarとnetcatの組み合わせです。私はターミナルにいないので、完全なデモを書くことはできませんが、このページはかなり良い仕事をします:
http://toast.djw.org.uk/tarpipe.html
必ず圧縮を使用してください。最良のケースでは、3つの潜在的なボトルネック(ソースでの読み取り、ネットワークでの読み取り、ターゲットでの書き込み)のうち最も遅いスループット速度でデータを転送できます。
サーバーOSを指定しない-robocopyを検討しましたか?そのWindowsベースです。スレッド化、再試行、および帯域幅制限をサポートします。 UNCからUNCに対応。 RoboCopy docs
rsyncのクイックgoogleはunix/windowsを示しています...多分あなたはwindowsを使っています。
ZFSがある場合は、ZFSレベルのレプリケーションを使用して、ファイルシステムを新しい宛先に送信できます。
これがオプションではない場合は、UDR + rsyncを検討してください。詳細は以下のとおりです。 大量の小さなファイルを転送する