ディレクトリにハードリンクすると、コンテンツは各ファイルにハードリンクされているかのように「保存」されますか?

ディレクトリにハードリンクすると、コンテンツは各ファイルにハードリンクされているかのように「保存」されますか?

インターネット上のファイルが元の場所から削除されても、ファイルをバックアップとしてディスクに強制するためにハードリンクを使用することについて話している人を見たことがあります。

これはディレクトリにも当てはまりますか?その理由は何ですか?

ext4ファイルシステムを使用すると仮定すると(重要な場合)、他の(UNIX / inodeベース)ファイルシステム(特にbtrfs)への回答にも興味があります。

ベストアンサー1

これはうまくいきません。

ハードリンクはファイルの内容を保持せず、その内容へのポインタのみを保持します。したがって、ファイルの場合、ファイルの変更は保持されず、ディレクトリの場合、ディレクトリの内容に対する変更も保持されません。 (下)各ファイルが個別に削除されるためです。ディレクトリをハードリンクできますが、後でまだ空です。

まず、ディレクトリは通常ハードリンクを許可しません。ディレクトリへのシンボリックリンクにはすでに問題があり、無限シンボリックリンクループがあまりにも遠くに進むのを防ぐトリックがあります。少なくともシンボリックリンクの場合、識別しやすく簡単に無視され、ディレクトリツリーを巡回するほとんどのプログラム(例えばfind)は基本的にシンボリックリンクを完全に無視します(決して従わない)。

ハードリンクされたディレクトリはすでに訪問しているディレクトリを知ることができないため、検出して追跡するのは難しいです。したがって、各ディレクトリがすでに訪問しているディレクトリの1つであることを確認する必要があります。ほとんどのプログラムは、慣例に従ってこれが当初は存在しないと予想しているので、これを行いません。

何らかの理由でディレクトリをハードリンクする必要がある場合は、非常によく似た作業を実行することがあります。つまり、mount --bind olddir newdirマウントがある位置に固定されていないため、バインディングマウントには無限構造がないなどのいくつかの欠点がありません。繰り返します。代わりに別のサブマウントがあります(他のサブマウントもツリーには表示されません)。これは、他のインストールによって隠されたファイルを探している場合に便利です。

どちらの場合も、常に実際のコピーが必要なため、コンテンツは保存されません。

おすすめ記事