Linuxではファイルやディレクトリにアクセスできるファイルを作成するリンク機能が使えます。Linuxのリンク機能にはハードリンクとシンボリックリンクの2種類があります。
□ハードリンク
通常、Linuxでファイルを保存すると固有のiノード番号が割り当てられます。iノードには、ファイルのサイズやアクセス権、所有者、ディスク上の物理的なデータ保存場所など、様々な情報が格納されています。このiノードが同じになる別のファイルを作成することで、複数のファイルから同じファイルにアクセスできるのがハードリンクです。
ハードリンクでは、元のファイルもハードリンクとして作成したファイルもiノードが同じため区別がつきません。そのため、どちらかを削除してもすべて削除しない限りはファイルの内容は消えません。
iノードがファイルシステムごとに管理されているため、リンク元と違うファイルシステムにハードリンクを作成することはできません。また、ディレクトリのハードリンクも作成することはできません。
□シンボリックリンク
リンク元のファイルへのポインタを持つことで、リンク元ファイルの場所を指し示すのがシンボリックリンクです。シンボリックリンクを残してリンク元のファイルを削除することができ、この状態でシンボリックリンクにアクセスした場合、ファイルが見つけられずエラーを出します。
シンボリックリンクでは、リンク元とは違うファイルシステムでもリンクを作成することができます。またディレクトリのシンボリックリンクも作成することができます。
□lnコマンド
リンクの作成にはlnコマンドを使います。「ln [オプション] リンク元ファイル リンクファイル名」のように記述します。-sオプションを使うとシンボリックリンク、オプションなしだとハードインクが作成されます。
上の例では、test.txtのハードリンクとシンボリックリンクを作成しています。lsコマンドでリンク元ファイルと作成した2つのリンクを見ると、一番左に表示されているiノード番号がリンク元ファイルとハードリンクは同じになっていますがシンボリックリンクのみ異なっていることがわかります。