ハードリンク
ハードリンクとはコンピュータのファイルシステム上のファイルやディレクトリ等の資源とその資源につけられた名前を結びつけること、もしくは、その結びつきのことをいう。よって、名前によってアクセスできるファイルは少なくともひとつのハードリンクを持っている。ファイルは複数のハードリンクを持つこともある。この場合、そのファイルは複数の異なった名前でアクセスできる。
ソフトリンクが名前とファイルへのアクセス方法を結びつけるのに対し、ハードリンクは名前をファイルに直接結びつけるものであるため、ファイルへのアクセスはどの名前からハードリンクをたどっても同じ処理方法となる。ファイルに複数のハードリンクを作ることができるファイルシステムでは、ファイルを削除するというのはハードリンクを削除するという意味で使われる。そのようなシステムではファイルはハードリンクによる参照カウントを記録しており、ハードリンクが削除された場合でも、別のハードリンクが存在している限り、ファイル自体は削除されずに残る。参照するハードリンクがなくなった時点でファイルが削除される。
ハードリンクはその性質上ファイルシステムそのものの機能に強く依存しており、異なったボリューム間をまたがったリンクを作成するのは原理的に不可能である。
ファイルに別名をつける機能としてのハードリンクは主にソフトリンク(UNIXではシンボリックリンク)が実装されていなかった時代のUNIXで用いられた。最近ではNTFSやHFS+にも実装されており、今日利用されている多くのオペレーティングシステムに備わっているが、ファイルに別名をつける目的には、ボリューム間でもリンクを作ることができ、管理も簡単なソフトリンクを用いることが多い。
UNIXにおいては、ディレクトリが3種類のハードリンクで参照されているのが特徴的である。例えば「tmp」と呼ばれるディレクトリに対して、その3つとは
- 親ディレクトリからそのディレクトリを参照するためにつけられた「tmp」という名前
- そのディレクトリから自分自身を参照するためにつけられた「.」という名前
- 子ディレクトリからそのディレクトリを参照するためにつけられた「..」という名前
である。最後のハードリンクは子ディレクトリの数だけ作られる。