LinuCレベル1 101の出題範囲「1.02.3 ハードリンクとシンボリックリンク」の技術的内容について解説をまとめました。
重要度 2 概要 ファイルに対するハードリンクとシンボリックリンクを作成して管理できる。 詳細 ・リンクを作成する。
・ln [-s]
・ハードリンクとシンボリックリンクを識別する。
・ls [-lFi]
・ファイルのコピーとリンクの違いを知っている。
・ファイル, ディレクトリ
・システム管理業務をサポートするためにリンクを使用する。
・バージョン管理

ハードリンクとシンボリックリンク
Linuxのリンクには、ハードリンクとシンボリックリンクの2種類があります。
ハードリンクの概要
ハードリンクは、iノード番号をコピーするリンクです。
ハードリンクは以下のコマンドで作成します。
ln リンク元のファイル名 ハードリンク名
・ハードリンク:
ハードリンクはlnコマンドをオプション無しで実行することで作成することができます。ln リンク元のファイル名 ハードリンク名
ハードリンクは、iノードの仕組みを用いて、複数のファイル名で一つのファイルの実体を共有することができます。
iノードはファイルシステムごとに管理されているため、別のファイルシステム上のファイルに対して作成することはできません。
ハードリンクを削除しても他のハードリンクが残っている場合は、ファイルの実体は削除されることはありません。
また、スーパーユーザ以外のユーザはlnコマンドを使ってハードリンクをディレクトリに対して作成することはできません。

ハードリンクの特徴
ハードリンクには次の特徴があります。
- 別のファイルシステム上に対してはリンクを作成できない
- ハードリンクを削除しても他のハードリンクが残っている場合はファイルの実態は削除されない
- iノードの仕組みを使って一つのファイルの実態を複数のファイル名で共有するリンクがハードリンク
- iノードはファイルの詳細な情報が書かれているデータ
- ハードリンクはディレクトリに対しては作成できない
シンボリックリンクの概要
シンボリックリンクは、ファイルの格納場所をリンクとして設定するリンクです。Windowsのショートカットリンクはシンボリックリンクと同じ仕組みです。
シンボリックリンクはリンク元の実体の場所を情報としてもっています。
その情報を元に、リンク元のファイルやディレクトリを参照しています。
そのため、ファイルやディレクトリの移動によりリンク元の実体の場所が変わってしまうと参照ができなくなってしまいます。

シンボリックリンクは以下のコマンドで作成します。
ln -s リンク元のファイル名 シンボリックリンク名
・シンボリックリンク:
シンボリックリンクはlnコマンドにオプション-sを指定し、実行することで作成することができます。ln -s リンク元のファイル名 シンボリックリンク名
シンボリックリンクは上でも説明したとおり、リンク元の実体の場所を情報として持っています。
ハードリンクとは違い、ファイルシステムをまたいで作成することも可能です。
シンボリックリンクを削除してもリンク元のファイルの実体が削除されることはありません。
また、ディレクトリに対してもシンボリックリンクを作成できます。

シンボリックリンクの特徴
シンボリックリンクには次の特徴があります。
- ファイルシステムをまたいでもリンクを作成できる
- シンボリックリンクを削除してもリンク元のファイルは削除されない
- ディレクトリに対してもシンボリックリンクを作成できる
