アプリケーション移行の一環として、ディレクトリ構造を新しいホストにコピーする必要があります。ディレクトリ構造は次のとおりです。
{10 - ff} / {00 - ff} / {00 - ff} (含まない) / 一意のファイル名
つまり、何百万ものファイルが存在することになります。ツリーの 3 番目のレベルは完全には設定されておらず、すべての 3 番目のレベルのディレクトリにファイルが存在するわけではありません。
du は、第 2 レベルのフォルダーでも完了するまでに長い時間がかかります。tar | nc を使用すると 10 日かかります。1 日の停止は可能ですが、10 日は不可能です。
答え1
rsync
これに使用します。
- 新しいサーバーの使用に切り替える前に、
rsync
あるホストから別のホストにディレクトリ全体をコピーします。この作業が完了するまでには、かなりの時間がかかると思われます。 - 完了したら、
rsync
もう一度実行して、最初の rsync 中に変更されたファイルを取得します。 - カットオーバーを実行するまで、定期的な実行を続けます
rsync
。これは、転送する必要があるデータの量を低く抑えるためです。 - 停止して、古いサーバーへのすべての書き込みを停止します。
- 最後にもう一度
rsync
- 新しいサーバーでサービスを起動する
答え2
このディレクトリ構造がデバイス/パーティション上のデータの大部分を占めている場合、それが問題の原因であれば、ディレクトリ構造を無視します。
代わりに、デバイスをアンマウントし (または読み取り専用で再マウントし)、dd(1)
netcat を使用してファイルシステム ブロックを新しいホスト上の同じサイズのパーティションにコピーします。
必要な階層の外部に不要なデータがある場合は、移行後に削除します。
ホスト間のネットワークがボトルネックになっている可能性がある場合は、ドライブを取り外して新しいホストに接続することも検討できます。
答え3
ワンショットコピーの場合、ソースとターゲットを同じシステムにマウントできる場合は、次のようにします。
find [source top dir] | cpio -dump [target mountpoint]
ファイル属性をコピーして保存します。cpio ツールにも圧縮パラメータが必要です。