新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 link1ln -s file1 link1

✅ まとめ:ハードリンクを理解すれば「ファイル削除の謎」が解ける!

ハードリンクは、同じiノードを共有する複数のファイル名を作る仕組みです。
削除してもデータが残るのは、iノードがまだ他のリンクに参照されているから。

💡 覚えておきたいポイント

  • ln コマンドで簡単に作成できる。
  • 同じファイルシステム内でのみ利用可能
  • ファイル名が違っても中身は同じ(iノード共有)
  • 最後のリンクが削除されるまで、データは保持される。

Linuxのファイル管理の裏側には、こんな「リンクの魔法」が隠れているんですね。
ファイル操作の仕組みを理解すれば、システム管理がもっと楽しくなりますよ!