手当たり次第に書くんだ

飽きっぽいのは本能

LPIC ln コマンド – ハードリンクとシンボリックリンクの違い

ln コマンドは、ファイルに対するリンクを作成するコマンドです。Linux では、リンクにはハードリンクとシンボリックリンクがあります。LPIC 的にも実務的にも、この 2 つの違いを理解することが重要です。

ln コマンドの基本

ln は、デフォルトではハードリンクを作成します。シンボリックリンクを作成する場合は -s を付けます。

# ハードリンク
ln <元ファイル> <リンク名>

# シンボリックリンク
ln -s <元ファイルまたはディレクトリ> <リンク名>

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

項目ハードリンクシンボリックリンク
作成コマンドln file linkln -s file link
inode元ファイルと同じ inodeリンク用の別 inode
対象通常ファイルが基本ファイルにもディレクトリにも使える
別ファイルシステム作成できない作成できる
元ファイル削除リンク側から内容を参照できるリンク切れになる
見た目通常ファイルのように見えるls -l で -> が表示される

ハードリンクの確認

ハードリンクは、別名のファイルを作るように見えますが、実体としては同じ inode を参照します。ls -li で inode 番号を確認すると分かりやすいです。

echo 'hello' > original.txt
ln original.txt hardlink.txt

ls -li original.txt hardlink.txt
cat hardlink.txt

ハードリンクではリンク数が増えます。どちらか一方を削除しても、もう一方が残っていればデータ本体は残ります。

rm original.txt
cat hardlink.txt
ls -li hardlink.txt

シンボリックリンクの確認

シンボリックリンクは、元ファイルへの参照パスを持つリンクです。Windows のショートカットに近い感覚で理解できますが、Linux のファイルシステム上では通常のファイルとして扱われます。

echo 'hello' > original.txt
ln -s original.txt symlink.txt

ls -l original.txt symlink.txt
cat symlink.txt

元ファイルを削除すると、シンボリックリンクはリンク切れになります。

rm original.txt
ls -l symlink.txt
cat symlink.txt

相対パスのシンボリックリンク

シンボリックリンクでは、相対パスの解釈が重要です。相対パスは、コマンドを実行した場所ではなく、リンクファイルが置かれた場所を基準に解釈されます。

mkdir -p app/current app/shared
echo 'config' > app/shared/config.txt

ln -s ../shared/config.txt app/current/config.txt
ls -l app/current/config.txt
cat app/current/config.txt

よく使うオプション

オプション意味
-sシンボリックリンクを作成する
-f既存のリンク先を削除して作成する
-nリンク名がディレクトリへのシンボリックリンクの場合でも、リンク自体として扱う
-v作成したリンクを表示する
-r相対パスのシンボリックリンクを作成する

実務でよくある使い方

実務では、ハードリンクよりシンボリックリンクの方を使う場面が多いです。設定ファイル、バージョン切り替え、公開ディレクトリの向き先変更などで使われます。

# バージョンディレクトリを current に向ける例
ln -sfn /opt/app/releases/20260608 /opt/app/current
ls -l /opt/app/current

# 設定ファイルへのリンクを作る例
ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf

LPIC で押さえるポイント

  • ln だけならハードリンク、ln -s ならシンボリックリンク。
  • ハードリンクは同じ inode を参照する。
  • ハードリンクは別ファイルシステムをまたげない。
  • シンボリックリンクは元ファイルが消えるとリンク切れになる。
  • ls -li で inode、ls -l でシンボリックリンクの向き先を確認できる。

まとめ

ln コマンドで重要なのは、ハードリンクとシンボリックリンクの違いです。普段の運用ではシンボリックリンクを使うことが多いですが、LPIC では inode、リンク数、ファイルシステムをまたげるか、元ファイル削除時の挙動まで理解しておく必要があります。

LPIC ln コマンド – ハードリンクとシンボリックリンクの違い

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る