Linuxではlnコマンドでリンクを作成できるが、このリンクには2つの種類があることが分かった。
「ソフトリンク」と「ハードリンク」について
ソフトリンクとは
ソフトリンクは、WindowsのショートカットやMacのエイリアスと同じものである。Linuxでは、ソフトリンクのことをシンボリックリンクと呼ぶ。シンボリックリンクは実体を間接的に参照する。その為、実体のパスが変わったり、削除されたりするとシンボリックリンクからはアクセスができなくなる。
シンボリックリンクはパーティションを超えて実体にアクセスすることが可能になっている。これは、WindowsのCドライブに作ったショートカットから、Dドライブに作ったリンク先へアクセスできることをイメージすると理解しやすい。
Linuxでシンボリックリンクを作成するコマンドの書式
$ln -s [リンク先ディレクトリ名orリンク先ファイル名] [作成するシンボリックリンクファイル名]
ハードリンクとは
ハードリンクはファイルに複数の名前を割り当てる機能である。ハードリンクは実体を直接的に参照する。一般的な、WindowsのショートカットやMacのエイリアスとは、全くの別物なのでイメージが湧きにくいかもしれないが、ファイルが実際にそこにあるように扱うことができるという考え方である。
複数のハードリンクがある場合、ファイルに対してはどのリンクも同じ扱いになる。また、全てのハードリンクが削除されるまでファイルの本体は削除されない。
補足だが、ファイルへのハードリンクはできるが、ディレクトリへのハードリンクは許可されていない。ハードリンクの作成にはroot権限が必要になる。(自分の環境のAmazon Linuxではroot権限ですらディレクトリへのハードリンクを許可されていなかった。)
Linuxでハードリンクを作成するコマンドの書式
ln [リンク先ディレクトリ名orリンク先ファイル名] [作成するハードリンクファイル名]
Linuxでリンクを削除するコマンドの書式
rm [リンクファイル名]
※削除する場合、hoge/のようにスラッシュをつけると削除ができないので注意する。
ハードリンクとシンボリックリンクを削除したい場合は上記のコマンドを使用することで削除することができる。