はじめに(このページの目的)
この記事は、LPICレベル1学習中の筆者が、AIによる解説と実際の操作経験をもとにまとめたものです。
Linuxのシンボリックリンクとハードリンクについて、手を動かしながら理解を深めます。
最後に、学習での気づきや感想も添えます。
作業前の確認ポイント
– Linux環境(Ubuntu、Rocky Linuxなど)で端末操作ができること
– echo
、ls
、rm
など基本コマンドを使えること
– 練習用のファイルやスクリプトを自由に作成できる作業ディレクトリを用意しておくこと
実施手順
ステップ1:リンクとは
リンクとは、既存ファイルを別名や別の場所から参照できる仕組みです。
Linuxでは大きく次の2種類があります。
- ハードリンク:inode(実体)を共有するリンク
- シンボリックリンク:パス情報を参照するリンク
ステップ2:基本的な使い方
# 元ファイル作成
echo "Hello" > file.txt
# ハードリンク作成
ln file.txt hardlink.txt
# シンボリックリンク作成
ln -s file.txt symlink.txt
# inode番号確認
ls -li file.txt hardlink.txt symlink.txt
ln
はデフォルトでハードリンクを作成し、-s
オプションでシンボリックリンクを作成します。
ls -li
でinode番号を確認できます。
ステップ3:inodeとは
inode(アイノード)は、ファイルのデータや属性を管理する領域です。
格納される情報には次のようなものがあります。
- ファイルサイズ
- 所有者(UID)・グループ(GID)
- 作成・更新・アクセス時刻
- パーミッション
- データの格納先
- リンク数
ファイル名はinodeへのラベルに過ぎず、実体はinodeにあります。
ステップ4:inodeとリンクの関係
ハードリンクは複数の名前が同じinodeを共有し、リンク数が増えます。
全てのリンクが削除されるとinodeも消えます。
シンボリックリンクは別のinodeを持ち、参照先のパス情報だけを保持します。
参照先がなくなるとリンク切れになります。
ステップ5:注意点・落とし穴
- ハードリンクは同じファイルシステム内でのみ作成可能
- 通常ユーザーはディレクトリへのハードリンクを作成できない
- シンボリックリンクの参照先が削除されるとアクセス不可
- シンボリックリンクのパーミッションは実質的な意味を持たない
実践してみよう(練習問題)
問題1:リンク作成とinode確認
# 準備
echo "TestSample" > sample.txt
# ハードリンクとシンボリックリンク作成
ln sample.txt hard.txt
ln -s sample.txt sym.txt
# inode確認
ls -li sample.txt hard.txt sym.txt
期待:sample.txt
とhard.txt
は同じinode番号、sym.txt
は別番号。
問題2:リンク先削除時の挙動
# 元ファイル削除
rm sample.txt
# 残ったリンク確認
cat hard.txt
cat sym.txt
期待:hard.txt
は中身が見えるが、sym.txt
はエラーになる。
接続確認とトラブルシューティング
エラー | 原因 | 対処法 |
---|---|---|
No such file or directory | シンボリックリンク先が存在しない | リンク先を作成するかリンクを再作成 |
Permission denied | リンク先の権限不足 | 元ファイルのパーミッションを変更 |
補足情報まとめ
用語解説
用語 | 意味 |
---|---|
inode | ファイル属性・位置情報を保持する管理領域 |
リンク数 | 同じinodeを参照するファイル名の数 |
ハードリンク | inodeを共有する別名 |
シンボリックリンク | パス情報を持つ参照ファイル |
コマンド一覧
コマンド | 説明 |
---|---|
ln file link | ハードリンク作成 |
ln -s file link | シンボリックリンク作成 |
ls -li | inode番号とリンク数を表示 |
rm file | ファイル削除(リンク数ゼロでinodeも削除) |
まとめ
- ハードリンクはinodeを共有し、元ファイルがなくなっても内容が残る
- シンボリックリンクはパス参照型で、リンク切れの可能性がある
ls -li
でinode番号を比較すると違いがわかる
参考リンク
学習してみた感想(筆者コメント)
inodeとリンクの関係を理解することで、Linuxファイルシステムの仕組みが一段と明確になりました。
特に、ハードリンクとシンボリックリンクの違いを実験で確認すると、知識として定着しやすいと感じました。
今後はファイルシステムの制限や特殊なリンクについても学びを広げたいです。