ハードリンクとシンボリックリンク

ハードリンクとシンボリックリンク

  リンク機能は、ファイルをコピーしたり、移動できたりせずに別のディレクトリにあるように扱うことができる機能である。例えば、コマンドの引数として、ファイルやディレクトリを指定する場合、パス指定が長くて、複雑になると入力を間違えることがよくある。リンク機能を使えば、よく使うファイルを自分のホームディレクトリに置いてあるように扱うことができる。

 リンクには、ハードリンクとシンボリックリンクの2種類がある。

ハードリンク

 ハードリンクはファイルの実体を直接指し示して共有する。ハードリンを削除しても、元ファイルは削除されない。ハードリンクはi ノード番号を共有することで実現しているので、別ファイルシステム ( 別パーティション ) に作成することができない。

シンボリックリンク

 シンボリックリンクは、元ファイルが保管されている位置 ( パス ) を示す擬似的なファイルを作る。シンボリックリンクを消しても元ファイルに影響はない。元ファイルを消すとシンボリックリンクからのアクセスはエラーとなる。シンボリックリンクは別ファイルシステムの間で作成することができる。Windowsではショートカット と呼ばれるファイルと考え方が同じである。

$ ln 元ファイル名 リンク名

オプション

-s 
シンボリックリンクを作成する
-s オプションを付けない場合はハードリンクを作成する。

ファイルは必ず i ノード情報にリンクしており、ファイルを作るとハードリンクが1つできることと同じである。ファイルのハードリンクを作ると i ノードの領域にあるリンク数が1つ増え、ハードリンクを削除すると、リンク数が1つ減る。

 ファイルを消して、リンク数が0になると、ファイルのデータがファイルシステムから完全に削除される。