Instiq
第2章 · ファイル・ディレクトリの操作と管理·v1.0.0·更新 2026/7/6·読了目安 約10分

変更要約: 初版(主題1.02・副主題1.02.1〜1.02.4に対応)

2.3ハードリンクとシンボリックリンク

この節の要点

1つの実体を複数の名前で参照するリンクの仕組みを学びます。ハードリンクシンボリックリンクの違い(inode 共有か、パス参照か)、lnln -s による作成、ls -li での識別、コピーとの違い、バージョン切り替えなど管理業務での活用を押さえます。

Linux のファイル名は、実体(データ)に付けられたラベルにすぎません。実体の本籍がinode(ファイルの管理情報)で、1つの実体に複数の名前を与える仕組みがリンクです。「コピーせずに同じものを別の場所からも見せたい」という管理業務の定番手段です。

2.3.12種類のリンク

  • ハードリンクln 元 リンク名)=同じ inode を指す別名。どちらの名前も対等で、元を削除してももう一方から実体に届く(リンク数が 0 になるまでデータは残る)。
  • 制約=同一ファイルシステム内のみディレクトリには作成不可
  • シンボリックリンクln -s 元 リンク名)=パス(文字列)を記録した特殊ファイル。別ファイルシステムやディレクトリも指せるが、元を削除すると切れる壊れたリンク/dangling link)。
  • 識別=ls -l で先頭が l名前 -> 実体 表示(シンボリック)。ls -iinode 番号が同じならハードリンク。-F は名前末尾に @ を付ける。
試験ポイント

「別ファイルシステム/ディレクトリを指せるのはシンボリックリンクだけ」「元を消して切れるのはシンボリック・残るのはハード」「inode 番号が同じ=ハードリンク」 の3対比がほぼそのまま出題されます。ln の引数順(元が先・リンク名が後)も選択肢の定番です。

管理業務での主戦場はシンボリックリンクです。たとえばアプリを /opt/app-1.2/ /opt/app-1.3/ とバージョン別に置き、/opt/app というシンボリックリンクを現行版に向けておけば、リンクを張り替えるだけでバージョン切り替え(と即時ロールバック)ができます。設定ファイルを一元管理して各所へ ln -s で配るのも定石です。一方ハードリンクは「同じ実体を確実に共有し、片方の削除に耐えたい」場面(バックアップの重複排除など)で使われます。コピー(cp)との違いも整理しましょう:コピーは独立した実体を作るため以後の変更は伝わりませんが、リンクは実体が1つなのでどの名前から編集しても同じ内容が見えます。ディスク使用量も、コピーは倍増・ハードリンクはほぼゼロ・シンボリックリンクはパス文字列分だけです。

観点ハードリンクシンボリックリンク
実体同一 inode の別名パスを記録した特殊ファイル
別ファイルシステム不可
ディレクトリ不可
元を削除すると実体は残る(リンク数>0)壊れたリンクになる
注意

ひっかけ: 「ハードリンクの元ファイルを削除すると、リンクも使えなくなる」は誤りです。ハードリンクは対等な別名なので、残った名前から実体へ届き続けます。使えなくなる(壊れる)のはシンボリックリンクの方です。また「ln -s 元 リンク名」の引数を逆に書いた選択肢(リンク名を先に書く)も誤りの定番です。

ハードリンク(inode共有)とシンボリックリンク(パス参照)の違いと識別方法の図。
引数は 元→リンク名 の順

2.3.2この節のまとめ

  • ハード=同一 inode の対等な別名(同一FS・ディレクトリ不可・削除に強い)/シンボリック=パス参照(FS跨ぎ・ディレクトリ可・切れうる)
  • 作成は ln/ln -s(元→リンク名の順)・識別は ls -li。実務の定番はシンボリックリンクでバージョン切替

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. /opt/app-1.3 ディレクトリを /opt/app という名前でも参照できるようにリンクを作りたい。適切なコマンドは?

Q2. ファイル A に対するハードリンク B を作成した後、A を削除した。B はどうなる?

Q3. 2つのファイル名が同じ実体(ハードリンク)かどうかを確認したい。最も適切な方法は?

理解度を確認第2章「ファイル・ディレクトリの操作と管理」の問題を解く