私が理解したように、ハードリンクには元のファイルのコピーが含まれており、ある場所からハードリンクされたファイルを削除しても別の場所に存在する可能性があります。
では、なぜハードリンクを使用するのですか?なぜ2つの別々のファイルを持っていないのですか?
答え1
ファイルをコピーすると、コンテンツもコピーされます。したがって、単一ファイルの内容を変更しても他のファイルには影響しません。
ハードリンクを作成すると、同じコンテンツを指すファイルが生成されます。したがって、いずれかのファイルの内容を変更すると、両方のファイルに変更が表示されます。
答え2
ハードリンクは、基本的に同じファイルの2番目のファイル名です。したがって、ファイルをハードリンクすると、ファイルシステムに一度だけ存在するため、スペースを一度だけ占有します。したがって、ディスク容量を節約するには、次のものを使用する必要があります。
答え3
UNIXファイルシステムでは、各ファイル名は実際にディスク上のデータの場所(inodeと呼ばれる)へのハードリンクです。既存のファイルへの新しいハードリンクを作成する場合、これは同じデータへの別のポインタにすぎず、ディスクの余分なスペースを占有しません。 1つ以上のリンクを介してデータを編集するか、inodeを直接編集すると、両方のファイルが変更されます。
システムは、各索引ノードのハードリンク数を追跡します。リンク数が0に達すると、ファイルにアクセスできなくなり、データは安全であるとマークされ、上書きされます。したがって、2つのハードリンクを持つファイルの場合、いずれかのリンクが削除されてもデータは削除されません。どちらも削除しなければデータは消えます。
-i
コマンドのスイッチを使用してファイルのinode番号を表示できますls
。
一方、ソフトリンクはファイル名を介して別のファイルを指します。元のファイルを移動または削除すると、リンクが壊れます。
答え4
「なぜハードリンクを使用するのですか?」という質問のセクションを参照してください。
ハードリンクファイル(またはソフト(シンボル)リンクファイル)は、単一の実行可能ファイルをさまざまな目的で偽装するための便利な方法を提供します。
それは名前実行に使用できるオプションを決定するためにコードがどのように呼び出されるかを調べることができます。これにより、わずかに異なる目的に必要なすべての共有機能を含む大規模なコードスニペットを開発してパッケージ化できます。ユーザーの観点から見ると、「コンテンツ」(名前別)実行仕様は、選択と表示をより管理しやすいオプションのサブセットに制限します。
代表的な例がLVMです。歴史的に、HP-UXはさまざまな実行可能ファイルにハードリンクファイル(たとえば、、vgdisplay
などvgcreate
)vgextend
を使用していました。今日のLinuxと同様に、これらのコマンドは実際には実行可能ファイルへのシンボリック(ソフト)リンクですlvm
。