ハードリンクを維持しながら何百万ものファイルをコピーするのにcpより良い方法はありますか?

ハードリンクを維持しながら何百万ものファイルをコピーするのにcpより良い方法はありますか?

だからこの物語GNU coreutils MLでは、誰かがcpを使用して4億3000万のファイルをコピーし、ハードリンクを保存する必要がありました。やっとやっと10日で行われました。

最も大きな問題は、ハードリンクを保存するためにcpがコピーされたファイルのハッシュテーブルを保存しなければならなかったため、最終的に17GBのメモリを占有し、スワップ時にシステムがクラッシュすることでした。

これをよりよく処理するユーティリティはありますか?

ベストアンサー1

tar解決策がrsync失敗し、ディレクトリがファイルシステムのルートである場合は、以前のバックアップdump/restoreユーティリティを使用できます(はい、まだ機能しています)。

dumpカーネルファイルシステムインタフェースを介さずにファイルシステムの特性を複製するので、速度はかなり高速です。

不便な点は、dumpコピーがソースファイルシステムの変更に敏感であることです。したがって、ファイルシステムのマウント解除、読み取り専用の再マウント、またはコピーを開始する前に、ファイルシステムにアクセスできるすべてのアプリケーションを停止することをお勧めします。その条件を尊重すると、コピーは信頼できます。

ファイルシステムの種類によっては、dumpコマンド名が変更されることがあります。たとえば、xfsdumpXFSのコマンド名を使用できます。

次のコマンドは例と似ていますtar

dump 0uf - /dev/sdaX  | (cd /target && restore rf -)

数字は増分コピーレベルで、0コピー全体を表します。

おすすめ記事