このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
新Linuxコマンド演習05

新Linuxコマンド演習05 概要
「新Linuxコマンド演習05」では、ハードリンク(Hard Link) と シンボリックリンク(Symbolic Link) の違いを理解します。
どちらも「別名でファイルにアクセスできる仕組み」ですが、動作原理や挙動は大きく異なります。
この演習では、実際にファイルを作成・リンクし、削除後の挙動や iノードの違いを確認します。
リンク構造を理解することで、ファイルシステムの仕組みをより深く学ぶことができます。

ハードリンクとシンボリックリンクの比較表
| 項目 | ハードリンク(Hard Link) | シンボリックリンク(Symbolic Link) |
|---|---|---|
| 作成コマンド | ln 元ファイル名 リンク名 | ln -s 元ファイル名 リンク名 |
| 指す対象 | 実体(同じiノードを参照) | ファイル名(パス)を参照 |
| iノード番号 | 元ファイルと同じ | 異なる |
| リンク切断時の挙動 | 元ファイルを削除してもリンクから内容を参照できる | 元ファイルが削除されるとリンクは切れてエラーになる |
| 使用範囲 | 同じファイルシステム内のみ | 異なるファイルシステム間でも可 |
| 目的 | 同一内容の冗長アクセス、バックアップ用途 | ショートカット的な参照 |
上記の表から分かるように、ハードリンクは実体共有型、シンボリックリンクは参照型のリンクです。
見た目は似ていますが、構造がまったく異なります。
演習問題+模範解答例
演習01:元となるファイルの作成
問題
ファイル「note」を作成し、「This is note.」という内容を保存してください。
模範解答例
[suzuki@AlmaLinux ~]$ echo "This is note." > note
[suzuki@AlmaLinux ~]$ cat note
This is note.解説
echo コマンドで文字列をファイルに書き込み、> でリダイレクトしています。
この時点で、「note」という新しいファイルが作成されています。
演習02:ハードリンクファイルの作成
問題
ファイル「note.hard」を、ファイル「note」のハードリンクとして作成してください。
模範解答例
[suzuki@AlmaLinux ~]$ ln note note.hard
[suzuki@AlmaLinux ~]$ ls -l
-rw-r--r--. 2 suzuki suzuki 15 10月 30 10:00 note
-rw-r--r--. 2 suzuki suzuki 15 10月 30 10:00 note.hard解説
ln コマンドでハードリンクを作成します。
出力から分かるように、リンク数(2) となり、2つのファイルが同じ実体を共有しています。
演習03:シンボリックリンクファイルの作成
問題
ファイル「note.sym」を、ファイル「note」のシンボリックリンクとして作成してください。
模範解答例
[suzuki@AlmaLinux ~]$ ln -s note note.sym
[suzuki@AlmaLinux ~]$ ls -l
-rw-r--r--. 2 suzuki suzuki 15 10月 30 10:00 note
-rw-r--r--. 2 suzuki suzuki 15 10月 30 10:00 note.hard
lrwxrwxrwx. 1 suzuki suzuki 4 10月 30 10:01 note.sym -> note解説
-s オプションを付けることで、シンボリックリンク(ソフトリンク) を作成します。
ls -l の結果に「-> note」と表示されており、noteファイルを参照していることが分かります。
演習04:iノードの確認
問題
ファイル「note」「note.hard」「note.sym」の iノード番号を確認してください。
模範解答例
[suzuki@AlmaLinux ~]$ ls -i note note.hard note.sym
35718196 note 35718196 note.hard 35718202 note.sym解説
ls -i コマンドでiノード番号を確認できます。
ここで「note」と「note.hard」は同じiノード番号を持ち、同じ実体を参照していることが分かります。
一方「note.sym」は別の iノード番号であり、参照情報のみを保持しています。
この状況を図にまとめます。

演習05:内容の確認
問題
3つのファイルの内容をcatコマンドで確認してください。
模範解答例
[suzuki@AlmaLinux ~]$ cat note
This is note.
[suzuki@AlmaLinux ~]$ cat note.hard
This is note.
[suzuki@AlmaLinux ~]$ cat note.sym
This is note.解説
どのファイルを参照しても内容は同じに見えます。
しかし、ハードリンクは実体を共有しており、シンボリックリンクはあくまで参照元を経由しているだけです。
演習06:ハードリンクとシンボリックリンクの違いを確認
問題
元のファイル「note」を削除したあと、それぞれのファイルの内容を確認してください。
模範解答例
[suzuki@AlmaLinux ~]$ rm note
[suzuki@AlmaLinux ~]$ cat note
cat: note: そのようなファイルやディレクトリはありません
[suzuki@AlmaLinux ~]$ cat note.hard
This is note.
[suzuki@AlmaLinux ~]$ cat note.sym
cat: note.sym: そのようなファイルやディレクトリはありません解説
note を削除しても、ハードリンク(note.hard)はアクセス可能です。
それは同じ iノードを共有しているため、実体(データ部分)はまだ残っているからです。
一方で、シンボリックリンク(note.sym)は参照先の note がなくなったため、「リンク切れ」になります。
つまり、シンボリックリンクは実体を持たず、あくまでファイルの“場所”を指すポインタです。
補足:Linuxにおける「削除」の仕組み
Linuxで「ファイルを削除する」とは、ファイル名とiノードの紐づけを切断する ことを意味します。
実体(データブロック)は、すべてのリンクが切断されるまではディスク上に残っています。
つまり
- iノードが指すリンクが1つでも残っていれば、内容は維持される。
- すべてのリンクが削除されると、領域は再利用可能になる。
この仕組みが、ハードリンクが元ファイル削除後もデータを保持できる理由です。
まとめ
「新Linuxコマンド演習05」では、Linuxファイルシステムの根幹である リンク機能 を学びました。
- ハードリンク:同じ iノードを共有し、実体を指す。
- シンボリックリンク:ファイル名を参照するポインタのような存在。
この違いを理解することで、Linuxのファイル構造の仕組みをより深く理解できます。
特に、バックアップ、ショートカット設定、ファイル共有の際に非常に役立つ知識です。
