このページで解説している内容は、以下の 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のファイル構造の仕組みをより深く理解できます。
特に、バックアップ、ショートカット設定、ファイル共有の際に非常に役立つ知識です。