
新Linux入門|ハードリンクとシンボリックリンクの違いを理解しよう
Linuxには、ファイルを「別の名前」や「別の場所」から参照できる便利な仕組みがあります。
それが ハードリンク と シンボリックリンク です。
一見似ていますが、内部の仕組みや動作には大きな違いがあります。
この記事では、AlmaLinux 9.6 を使って、両者の違いをわかりやすく解説します。
🔗 リンクの基本概念
Linuxのファイルは、実際のデータ(内容)と、そのデータを指す「名前(ファイル名)」が別々に管理されています。
この「データ部分」は iノード(inode) という情報構造によって管理され、
複数のファイル名が同じiノードを参照することもできます。
リンクとは、このiノードへの参照を増やしたり、別のパスとして指し示したりする仕組みのことです。
⚙️ 定義と仕組みの違い
| 種類 | 定義 | iノード | 参照対象 | 特徴 |
|---|---|---|---|---|
| ハードリンク | ファイルシステム上で同じiノードを複数の名前で参照する方法 | 同じ | ファイルの実体(iノード) | 実体共有。どちらも本体。削除しても他が残ればデータも残る。 |
| シンボリックリンク | 別のファイルやディレクトリを指す「パス情報」を持つファイル | 別 | ファイル名(パス) | ポインタのように参照。リンク先が削除されると無効になる。 |
💡 まとめポイント
- ハードリンクは「同じ実体を共有」する兄弟のような関係。
- シンボリックリンクは「案内板」のような存在で、実体ではなく「住所」を持つだけ。
🧱 ファイルシステムでの関係図(概念)
| ファイル名 | 参照先 | iノード | データ実体 | 備考 |
|---|---|---|---|---|
| note | iノード 35718196 | 35718196 | "This is note." | 元のファイル |
| note.hard | iノード 35718196 | 35718196 | "This is note." | ハードリンク(同じ実体) |
| note.sym | note へのパス | 35718202 | パス情報のみ | シンボリックリンク(参照先) |
💬 ハードリンクは同じiノード番号を持ちますが、シンボリックリンクは別のiノード番号を持ち、
実体ファイルのパス情報を格納しています。
🧰 ハードリンクとシンボリックリンクの作成方法
Linuxでリンクを作るには、どちらも ln コマンドを使用します。
コマンドの書式
| 種類 | 書式 | 説明 |
|---|---|---|
| ハードリンク | ln [元ファイル] [リンク名] | 同じiノードを参照するリンクを作成 |
| シンボリックリンク | ln -s [元ファイル] [リンク名] | 元ファイルへのパスを持つリンクを作成 |
主なオプション
| オプション | 説明 |
|---|---|
| -s | シンボリックリンクを作成する |
| -v | 作成結果を詳細に表示する |
| -f | 既存ファイルを上書きしてリンクを作成 |
| --help | ヘルプを表示 |
🧪 実際に試してみよう!
以下の例は、AlmaLinux 9.6 の一般ユーザー suzuki で実行したものです。
① 元のファイルを作成
[suzuki@AlmaLinux ~]$ echo "This is note." > note② ハードリンクとシンボリックリンクを作成
[suzuki@AlmaLinux ~]$ ln note note.hard
[suzuki@AlmaLinux ~]$ ln -s note note.sym③ iノードを確認
[suzuki@AlmaLinux ~]$ ls -i note note.hard note.sym
35718196 note 35718196 note.hard 35718202 note.sym📘 解説
- note と note.hard は 同じiノード番号(35718196) を共有しています。
- note.sym は別のiノード(35718202)を持ち、パス情報(note への参照)を保持しています。
この状況を図にまとめます。

🔍 動作確認
① 各ファイルの内容を確認
[suzuki@AlmaLinux ~]$ cat note
This is note.
[suzuki@AlmaLinux ~]$ cat note.hard
This is note.
[suzuki@AlmaLinux ~]$ cat note.sym
This is 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.hard)は、同じiノードを共有しているためデータが残っています。
- シンボリックリンク(note.sym)は、参照先が消えたため「壊れたリンク(broken link)」になっています。
シンボリックリンクは、あくまで、ファイルへの参照先(ポインタ)を格納しているにすぎなく、参照先のファイルがなくなれば、当然ながら、アクセスすることができません。

🧠 ハードリンクとシンボリックリンクの違いまとめ
| 比較項目 | ハードリンク | シンボリックリンク |
|---|---|---|
| iノード番号 | 同じ | 異なる |
| ファイルの実体 | 共有 | パスを保持 |
| 元ファイル削除時 | データ残る | リンク切れになる |
| ディレクトリリンク | 通常不可 | 可能 |
| 異なるファイルシステム | 不可 | 可能 |
| 作成コマンド例 | ln file1 file1.hard | ln -s file1 file1.sym |
💡 覚え方
- ハードリンク=実体を共有する「兄弟」
- シンボリックリンク=案内板(ショートカット)
🧾 Linuxでの「削除」の本当の意味
Linuxでは、「ファイルを削除する」とは ファイル名とiノードとのリンクを切る ことを意味します。
データそのものはすぐには消えず、リンク(参照)が完全になくなるまでディスク上に残ります。
つまり
- ハードリンクが残っていれば、データは存続。
- 全てのリンクが切れた時点で初めてディスク領域が解放されます。
この仕組みのおかげで、Linuxはファイル操作を非常に効率的かつ安全に行うことができます。
✅ まとめ:違いを理解して使い分けよう!
ハードリンクとシンボリックリンクは、どちらも便利な「ファイル参照の仕組み」ですが、
使う場面に応じて選ぶことが大切です。
💡 ポイントまとめ
- ハードリンクは「同じ実体を共有」し、削除しても他のリンクが残ればデータは消えない。
- シンボリックリンクは「パスを参照」するため、柔軟で便利だが、元ファイルが消えるとリンク切れになる。
- 作成にはどちらも
lnコマンドを使用する(シンボリックリンクは-sが必要)。
システム管理やスクリプト作成の際に、
「どちらのリンクを使えばよいか」を理解しておくことはとても重要です。
