各ファイルのハードリンクを使用してディレクトリを再帰的にコピーする方法

各ファイルのハードリンクを使用してディレクトリを再帰的にコピーする方法

各ファイルが元のファイルへのハードリンクであるディレクトリツリーの「コピー」を作成したいと思います。

例: 次のディレクトリ構造があります。

dirA/
dirA/file1
dirA/x/
dirA/x/file2
dirA/y/
dirA/y/file3

これは、各ファイルがソースへのハードリンクであるディレクトリツリーの「コピー」である予想結果です。

dirB/            #  normal directory
dirB/file1       #  hardlink to dirA/file1
dirB/x/          #  normal directory
dirB/x/file2     #  hardlink to dirA/x/file2
dirB/y/          #  normal directory
dirB/y/file3     #  hardlink to dirA/y/file3

ベストアンサー1

Linux(より正確には、GNUとLinuxをカーネルとして使用するシステムで一般的に見られるbusybox実装を使用cp)と最近のFreeBSDでは、次のようになります。

cp -al dirA dirB

より移植性の高いソリューションについては、paxとcpioを使用したStéphane Chazelasの回答を参照してください。

おすすめ記事