【linu C101】ハードリンクとシンボリックリンクの違いを初心者向けに解説




はじめに

LinuC101の学習を進めていると、ファイル操作の分野で必ず出てくるのがハードリンクシンボリックリンクです。

名前が似ているうえに、どちらも「リンク」という言葉が使われているため、

  • 何がどう違うのか分からない
  • 試験では分かるけど実務のイメージが湧かない
  • 暗記になってしまって混乱する

という人も多いと思います。

この記事では、Linux初心者・LinuC101受験者向けに、 ハードリンクとシンボリックリンクの違いを「仕組み」「使われ方」「コマンド操作」の3点から分かりやすく解説します。


そもそも「リンク」とは何か?

Linuxにおけるリンクとは、1つのファイルを別の名前や場所から参照できる仕組みのことです。

Windowsのショートカットを思い浮かべる人も多いですが、
Linuxのリンクはファイルシステムの内部構造に深く関係しています

Linuxではファイルは、

  • データ本体
  • そのデータを管理する情報(inode)

に分かれて管理されています。

この inode を「共有するか」「参照するだけか」の違いによって、
ハードリンクとシンボリックリンクに分かれます。


ハードリンクとは

ハードリンクの仕組み

まずはハードリンクから見ていきましょう。

ハードリンクは、同じ inode を複数のファイル名で共有する仕組みです。

つまり、

  • ファイルA
  • ファイルB

が、
完全に同じ実体(同じデータ)を指している状態になります。

どちらか一方を編集すると、もう一方の内容も同時に変わります。

inode とは何か

ここで出てきた inode(アイノード) とは、
Linux において「ファイルの実体を管理するための情報」です。

inode には、次のような情報が格納されています。

  • ファイルの実データの場所

  • ファイルサイズ

  • パーミッション

  • 所有者

  • リンク数 など

一方で、ファイル名そのものは inode には含まれていません。

Linux では、

  • ファイル名 → inode を指す

  • inode → 実体(データ)を管理する

という構造になっています。

そのためハードリンクは、
「別名のファイルを作る」のではなく、
同じ inode を指すファイル名をもう1つ追加する

という仕組みになります。

この構造を理解しておくと、

  • なぜハードリンクは元ファイルを削除しても消えないのか

  • なぜリンク数が増えるのか

といった挙動も、自然に理解できるようになります。


ハードリンクの特徴

  • 元ファイルとリンクの区別がつかない
  • どちらが本体という概念がない
  • inode番号が同じ
  • ファイル名を1つ削除しても、リンクが残っていればデータは消えない

この「削除してもデータが残る」という性質は、
Linuxのファイル管理を理解する上で重要なポイントです。


ハードリンクの制限

LinuC101でも頻出のポイントです。

  • ディレクトリには作成できない
  • 異なるファイルシステム間では作成できない

これは、inodeがファイルシステムごとに管理されているためです。


シンボリックリンクとは

シンボリックリンクの仕組み

シンボリックリンクは、別のファイルへのパス(場所)を参照するファイルです。

  • 実体は元ファイルとは別
  • 中身は「このパスを参照してね」という情報

という構造になっています。

Windowsのショートカットに近いのはこちらです。


シンボリックリンクの特徴

  • 元ファイルとは inode が異なる
  • 元ファイルを削除するとリンク切れになる
  • ディレクトリにも作成できる
  • 別のファイルシステム間でも作成できる

柔軟に使える一方で、
参照先が存在しないと機能しない点には注意が必要です。


Linuxコマンドでのリンク作成方法

ここからは、LinuC101で必ず押さえておきたい
ハードリンクとシンボリックリンクの作成方法を見ていきます。

リンクの作成には ln コマンドを使います。


ハードリンクの作成方法

ln 元ファイル リンク名

例:

ln test.txt hardlink

この時点で、
test.txthardlink は
同じ inode を共有するファイルになります。

どちらかを編集すると、もう一方の内容も同時に変わります。


シンボリックリンクの作成方法

ln -s 元ファイル リンク名

例:

ln -s test.txt symlink

この場合、symlink は
test.txt への参照(パス)だけを持つファイルです。

元ファイルを削除すると、リンク切れ状態になります。


-s オプションは超重要

LinuC101では、次の違いがそのまま問われることがあります。

  • ln → ハードリンク
  • ln -s → シンボリックリンク

「-s が付いていたらシンボリックリンク」
と即座に判断できるようにしておきましょう。


ハードリンクとシンボリックリンクの違いまとめ

項目 ハードリンク シンボリックリンク
inode 同じ
実体 同一 別ファイル
元ファイル削除 影響なし リンク切れ
ディレクトリ 作れない 作れる
別FS 不可

実務ではどう使われる?

シンボリックリンクの実例

  • Webアプリのリリース切り替え
  • コマンドや設定ファイルの参照先切り替え
  • 共通設定ファイルの管理

実務では、シンボリックリンクの方が使われる場面が圧倒的に多いです。


ハードリンクが使われる場面

  • バックアップ
  • ログ管理
  • ファイル削除防止

「リンクが残っている限りデータが消えない」という性質を活かします。


ちょっとしたこぼれ話

自分はLinuC101の勉強をしていたとき、
実際に手を動かさないとイメージが全然湧きませんでした。

なので、

  • テキストファイルを作る
  • ハードリンクとシンボリックリンクを作る
  • 元ファイルを削除して挙動を見る

といったことを、
メモ用テキストにコマンドを書きながら何度も試していました。

正直、一度自分で壊してみるのが一番記憶に残ります。


まとめ

  • ハードリンクは inode を共有する
  • シンボリックリンクは参照先パスを持つ
  • lnln -s の違いは超重要
  • 試験前には必ず一度は手を動かす

LinuC101では「暗記」よりも「仕組みの理解」が得点につながります。
この記事が、リンク周りで混乱している人の助けになれば幸いです。

コメント

タイトルとURLをコピーしました