1. ホーム
  2. unix

[解決済み] シンボリックリンクとハードリンクの違いは何ですか?

2022-03-19 16:34:10

質問

最近、就職の面接でこんなことを聞かれました。私は正直に、シンボリックリンクの動作や作成方法は知っていますが、ハードリンクの使い方やシンボリックリンクとの違いは理解していませんと答えました。

どのように解決するのですか?

ファイルシステムの下で、ファイルはinodeで表現されます。(あるいは、複数のinodeなのか?よくわかりません)。

ファイルシステム内のファイルは、基本的にinodeへのリンクです。

ハードリンクは、同じinodeへのリンクを持つ別のファイルを作成するだけです。

ファイルを削除すると、その下にあるinodeへのリンクが1つ削除されます。inodeは、そのinodeへのリンクがすべて削除されたときにのみ、削除(または削除可能/上書き可能)されます。

シンボリックリンクは、ファイルシステム内の別の名前へのリンクです。

ハードリンクが作成されると、そのリンクはinodeになります。元のファイルを削除したり、名前を変更したり、移動したりしても、ハードリンクは基になるinodeにリンクしているので、影響しません。inode上のデータに変更があった場合、そのinodeを参照しているすべてのファイルに反映されます。

注:ハードリンクは、同じファイルシステム内でのみ有効です。シンボリックリンクは、単に別のファイルの名前であるため、ファイルシステムをまたぐことができます。