ハードリンクが存在するのはなぜですか?

ハードリンクが存在するのはなぜですか?

ハードリンクが何であるかを知っていますしかし、なぜ使用すべきですか?ハードリンクの用途は何ですか?

ベストアンサー1

ハードリンクの最大の利点は、ソフトリンクと比較してサイズや速度の低下がないことです。ソフトリンクは、一般的なファイルアクセスの上に追加される間接層です。ファイルを開くと、カーネルはリンクを逆参照する必要があり、これには少し時間がかかります。さらに、リンクは、リンクテキストを保存するためにディスク上のわずかなスペースを占有します。これらの罰はファイルシステム構造に組み込まれているため、ハードリンクには存在しません。

私が知っている限り、これを見るための最良の方法は次のとおりです。

$ ls -id .
1069765 ./
$ mkdir tmp ; cd tmp
$ ls -id ..
1069765 ../

この-iオプションを使用すると使用できlsますアイノード番号ファイル。上記の例を用意したシステムでは、偶然にinode番号が1069765のディレクトリにありましたが、正確な値は重要ではありません。これは特定のファイル/ディレクトリを識別する固有の値にすぎません。

これが意味するのはサブディレクトリに行き、次を見るとその他ファイルシステムエントリは、..以前に取得したのと同じinode番号を持つと呼ばれます。これは、..MS-DOSやWindowsで発生するのと同様に、シェルがそれを解釈するためには発生しません。 Unixファイルシステムでは、..実際のディレクトリエントリがあり、これは古いディレクトリへのハードリンクです。

ハードリンクは、ファイルシステムのディレクトリを一緒に接続するリンクです。昔々、Unixにはハードリンクはありませんでした。 Unixの元のバージョンを変更するために追加されました。フラットファイルシステム階層ファイルシステムを入力します。

(これについて詳しくは、以下を参照してください。)「/」に「..」エントリがあるのはなぜですか?.)

Unixシステムでは、同じ実行ファイルが複数の異なるコマンドを実装するのが一般的です。 Linux ではこれ以上そうでないようですが過去に使用していたシステムでは、cpmvrmすべて同じ実行ファイルでした。考えてみると、これは意味があります。ボリューム間でファイルを移動すると、実際にはコピーして削除するため、mv他の2つのコマンドの機能はすでに実装する必要があります。実行可能ファイルにはそれを呼び出す名前が渡されるので、どのタスクを提供するかを決定できます。

組み込みLinuxでよく見られるもう1つの例は次のとおりです。忙しい箱、単一の実行可能ファイルの実装たくさん注文する。

ほとんどのファイルシステムでは、ユーザーがディレクトリへのハードリンクを作成することは許可されていないことを指摘したいと思います。.エントリは..通常、カーネルの一部であるファイルシステムコードによって自動的に管理されます。誤ってディレクトリハードリンクを作成して使用する場合、重大なファイルシステムの問題が発生する可能性があるため、これらの制限があります。これは、ソフトリンクが同じリスクを抱えて存在する多くの理由の1つです。

おすすめ記事