ハードリンク

ASCII.jpデジタル用語辞典 「ハードリンク」の解説

ハードリンク

あるファイル実体に対して、その本来の名前に加えて、別のパス(PATH)によるアクセスも可能にする、UNIXファイルシステムの1機能。ファイルの別名を実現するという意味では同様の機能を実現するシンボリックリンクという仕組みもあるが、実装からくる制限などで違いがある。UNIXのファイルシステムでは、ファイルは、ファイルのデータ実体が格納されている「データ領域」と、そのファイルの所有者や大きさ、作成日付、データ領域へのポインターといった各種情報を「Iノード」と呼ばれるエントリとで管理されている。ハードリンクは、このIノードの仕組みを利用し、データ領域へのポインターが同じ「ファイル(のIノードエントリ)」を作ることで実現されている(ファイルへのアクセスは、Iノードをたどっていくことで行なわれるため、Iノードのファイル実体へのポインターが同じなら、パス名が異なっても同じファイルを指し示すことになる)。Iノードはファイルシステムごとに管理されているため、ハードリンクには、異なるファイルシステム間でリンクを張ることができない、という制限がある(シンボリックリンクでは、ファイルシステムが異なっていてもリンク可能)。またIノードには、いくつのパスからリンクされているかという「リンクカウント」情報も格納されており、この数が2以上のうちは、リンクを削除しても実体が削除されることはない。逆に、リンクが1の場合(そのパス以外にはリンクしているパスがない状態)は、それを削除した段階で実体も削除されることになる(シンボリックリンクでは、シンボリックリンクを削除しても実体が削除されることはない)。もともとのUNIXにおいては、viex、viewというコマンドにハードリンクが用いられている例が有名(これらのバイナリプログラム実体は1つで、起動時のファイル名で挙動が変わるようにプログラムされている)。ハードリンクも、シンボリックリンクと同じく“ln"コマンドで設定できるが、一般ユーザーがハードリンクを利用することはあまりない。

出典 ASCII.jpデジタル用語辞典ASCII.jpデジタル用語辞典について 情報