
新Linux入門|ハードリンクの仕組みと使い方:ファイルを削除しても消えない理由
Linuxでファイルを削除したはずなのに、データがまだ残っている?
実はそれ、「ハードリンク」 が関係しているかもしれません。
ハードリンクは、1つのファイルに複数の名前をつける仕組みです。
つまり、見た目は別々のファイルでも、内部的には**同じ実体(同じiノード)**を共有しています。
この記事では、AlmaLinux 9.6環境をもとに、ハードリンクの基本構造・使い方・動作原理をわかりやすく解説します。
「なぜ削除してもデータが残るのか?」という疑問にも答えます。

🔗ハードリンクとは?
ハードリンクとは、既存のファイルと同じiノードを参照する別名を作成する仕組みです。
Linuxのファイルシステムでは、各ファイルは「iノード」と呼ばれるデータ構造で管理されています。
iノードには、ファイルの中身や属性(サイズ、所有者、更新日時など)への情報が格納されています。
ハードリンクを作成すると、複数のファイル名が同じiノードを共有することになります。
そのため、どちらの名前で開いても、同じ内容が表示され、変更も即座に反映されます。

⚙️ iノードとハードリンクの関係
| 項目 | 内容 |
|---|---|
| iノード番号 | ファイルを一意に識別する番号。ファイルシステム内で重複しない。 |
| ファイル名 | iノードへの参照(ラベルのようなもの)。複数の名前をつけることが可能。 |
| ハードリンク | 同じiノードを別の名前で参照する「もう1つのファイル名」。 |
| ファイル削除時の動作 | すべてのハードリンクが削除されるまで、データは保持される。 |
💡 ポイント
ファイルを削除してもiノード自体が残っている限り、
他のハードリンクからそのデータにアクセスすることができます。
🔧 ハードリンクを作成するコマンド
ハードリンクを作成するには、ln コマンドを使用します。
コマンド書式
ln [オプション] 元ファイル リンク名| オプション | 説明 |
|---|---|
| (なし) | 通常のハードリンクを作成する。 |
| -s | シンボリックリンクを作成する(※別の仕組み)。 |
| -v | 実行内容を詳細に表示する。 |
| --help | ヘルプを表示する。 |
🖥️ 使用例と動作の違いを確認してみよう
① オリジナルファイルの作成
[suzuki@AlmaLinux ~]$ echo "This is the original file." > file1
[suzuki@AlmaLinux ~]$ cat file1
This is the original file.② ハードリンクを作成
[suzuki@AlmaLinux ~]$ ln file1 link_to_file1
[suzuki@AlmaLinux ~]$ ls -li
53625418 -rw-r--r-- 2 suzuki suzuki 27 10月 28 21:40 file1
53625418 -rw-r--r-- 2 suzuki suzuki 27 10月 28 21:40 link_to_file1📘 説明
- 左端の数字(例:53625418)が iノード番号 です。
- file1 と link_to_file1 は同じ iノード番号を持っており、同じ実体を参照しています。
- ファイルのリンク数(2)も増えています。
③ 内容を変更してみる
[suzuki@AlmaLinux ~]$ echo "Edited through link_to_file1" >> link_to_file1
[suzuki@AlmaLinux ~]$ cat file1
This is the original file.
Edited through link_to_file1📘 結果
どちらのファイルを編集しても内容が同期されます。
なぜなら、どちらも同じiノードを参照しているからです。
④ 元ファイルを削除してみる
[suzuki@AlmaLinux ~]$ rm file1
[suzuki@AlmaLinux ~]$ cat link_to_file1
This is the original file.
Edited through link_to_file1📘 結果
file1 を削除しても、link_to_file1 にアクセスできます。
これは、iノードがまだ残っており、データが完全に削除されていないためです。
💡 つまり!
「ファイルを削除してもデータが残る」のは、他のハードリンクが同じiノードを保持しているからなんです。
🚫 ハードリンクの制約
| 制限項目 | 内容 |
|---|---|
| ファイルシステムの制限 | ハードリンクは同じファイルシステム内でのみ作成可能 |
| ディレクトリのリンク | 通常ユーザーはディレクトリへのハードリンク作成が禁止されている |
| クロスデバイスリンク | 異なるディスクやパーティションをまたいで作成できない |
| シンボリックリンクとの違い | シンボリックリンクは別iノードを持ち、元ファイルが削除されると切れる(壊れるリンクになる) |
💡 ポイント
ハードリンクは「安全で堅牢なリンク」ですが、制約もあるため、
異なるパスやディレクトリ構造を超えて使いたい場合は「シンボリックリンク(ln -s)」を使いましょう。
🧠 シンボリックリンクとの比較
| 比較項目 | ハードリンク | シンボリックリンク |
|---|---|---|
| iノード番号 | 同じ | 異なる |
| 元ファイル削除時 | データ残る | リンク切れになる |
| ファイルシステム | 同一FS内でのみ有効 | 異なるFSでも可 |
| 対象 | ファイルのみ | ファイル・ディレクトリ両方可 |
| コマンド例 | ln file1 link1 | ln -s file1 link1 |
✅ まとめ:ハードリンクを理解すれば「ファイル削除の謎」が解ける!
ハードリンクは、同じiノードを共有する複数のファイル名を作る仕組みです。
削除してもデータが残るのは、iノードがまだ他のリンクに参照されているから。
💡 覚えておきたいポイント
- ln コマンドで簡単に作成できる。
- 同じファイルシステム内でのみ利用可能
- ファイル名が違っても中身は同じ(iノード共有)
- 最後のリンクが削除されるまで、データは保持される。
Linuxのファイル管理の裏側には、こんな「リンクの魔法」が隠れているんですね。
ファイル操作の仕組みを理解すれば、システム管理がもっと楽しくなりますよ!
