はじめに
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.txt と hardlink は
同じ inode を共有するファイルになります。
どちらかを編集すると、もう一方の内容も同時に変わります。
シンボリックリンクの作成方法
ln -s 元ファイル リンク名
例:
ln -s test.txt symlink
この場合、symlink は
test.txt への参照(パス)だけを持つファイルです。
元ファイルを削除すると、リンク切れ状態になります。
-s オプションは超重要
LinuC101では、次の違いがそのまま問われることがあります。
ln→ ハードリンクln -s→ シンボリックリンク
「-s が付いていたらシンボリックリンク」
と即座に判断できるようにしておきましょう。
ハードリンクとシンボリックリンクの違いまとめ
| 項目 | ハードリンク | シンボリックリンク |
|---|---|---|
| inode | 同じ | 別 |
| 実体 | 同一 | 別ファイル |
| 元ファイル削除 | 影響なし | リンク切れ |
| ディレクトリ | 作れない | 作れる |
| 別FS | 不可 | 可 |
実務ではどう使われる?
シンボリックリンクの実例
- Webアプリのリリース切り替え
- コマンドや設定ファイルの参照先切り替え
- 共通設定ファイルの管理
実務では、シンボリックリンクの方が使われる場面が圧倒的に多いです。
ハードリンクが使われる場面
- バックアップ
- ログ管理
- ファイル削除防止
「リンクが残っている限りデータが消えない」という性質を活かします。
ちょっとしたこぼれ話
自分はLinuC101の勉強をしていたとき、
実際に手を動かさないとイメージが全然湧きませんでした。
なので、
- テキストファイルを作る
- ハードリンクとシンボリックリンクを作る
- 元ファイルを削除して挙動を見る
といったことを、
メモ用テキストにコマンドを書きながら何度も試していました。
正直、一度自分で壊してみるのが一番記憶に残ります。
まとめ
- ハードリンクは inode を共有する
- シンボリックリンクは参照先パスを持つ
lnとln -sの違いは超重要- 試験前には必ず一度は手を動かす
LinuC101では「暗記」よりも「仕組みの理解」が得点につながります。
この記事が、リンク周りで混乱している人の助けになれば幸いです。


コメント