もしあなたがそうするなら rm myFile
myFile
はハードリンクですが、どうなりますか?
Unixでは、すべての通常のファイルはハードリンクです。 Unix(およびほとんど(すべて?))ファイルシステムのハードリンクは、inode
と呼ばれるものへの参照です。 inode
には参照カウンターがあり、ファイルへの「リンク」が1つある場合(通常のオペランド)、カウンターは1です。2番目、3番目、4番目などのリンクを作成すると、カウンター毎に1ずつ増加します。リンク(rm
)を削除すると、カウンターが1つ減少(減少)します。リンクカウンターが0に達すると、ファイルシステムはinode
を削除し、スペースを使用可能としてマークします。
つまり、最後のリンクを削除しない限り、ファイルは残ります。
Edit:
最後のリンクが削除されても、ファイルは残ります。これは、ファイルに含まれるデータのセキュリティを他のプロセスからアクセスできないようにする方法の1つです。ファイルシステムからデータを完全に削除するのは、データのメタデータで指定されているように、データへのリンクが0であり、どのプロセスでも使用されていない場合のみです。
これ IMHOは、ハードリンク(およびソフトリンクとの違い)を理解する最も簡単な方法です。
テストは思ったより簡単でした。テキストファイルを作成し、ハードリンクしました。ハードリンクを削除するとnotハードリンクされているファイルが削除され、リンクされていたファイルはそのまま残ります。
ディスク内のすべてのファイルは、実際にはドライブ上の実際のデータへのポインタです。
そのファイルのハードリンクを作成すると、ハードリンクされたファイルは、元のファイルが指していたのと同じデータを指します。
この例のように、a.txtはドライブにあるファイルのデータ(バイト)を指していました。ハードリンクb.txtが作成されると、a.txtが指していたものを指します。
したがって、それらの1つを削除しても、互いに分離されている他の1つには影響しません。
ただし、両方を削除すると、システムはディスク上のデータにそれを指すファイルがないことがわかるため、システムはそれを空き領域と見なし、必要に応じて上書きします。