InfraAcademy

InfraAcademy Blog

シンボリックリンクとは?概要、コマンドなどシンボリックリンクについて詳しく解説!

| #Linux #Linux初心者

こんにちは、インフラエンジニアのryuです。

Linuxを操作していると、current -> releases/2026-07のように、矢印が付いたファイルを見かけることがあります。

これはシンボリックリンクです。

シンボリックリンクとは、別のファイルやディレクトリのパスを保存し、その場所へ案内する特殊なファイルです。

長いパスの短縮や、アプリケーションの参照先切り替えに使われます。

この記事では、作成・確認・削除方法、ハードリンクとの違い、リンク切れ、実務での用途を解説します。

シンボリックリンクとは

シンボリックリンクは、リンク先のパスを記録した特殊なファイルです。

リンクそのものに元ファイルの内容が保存されるわけではありません。

たとえば、次のディレクトリがあるとします。

/home/ryu/Photos

毎回この長いパスを指定する代わりに、ホームディレクトリへphotosというシンボリックリンクを作成できます。

/home/ryu/photos -> /home/ryu/Photos

/home/ryu/photosを開くと、Linuxはリンクに記録されたパスをたどり、/home/ryu/Photosへアクセスします。

シンボリックリンクは住所を書いたメモ

シンボリックリンクは、住所を書いたメモに例えると分かりやすいでしょう。

シンボリックリンクを住所のメモに例えた図

メモそのものは家ではありません。

メモに書かれた住所を確認し、その場所にある家へ向かいます。

シンボリックリンクも同じです。

リンクは元のファイルやディレクトリではなく、リンク先のパスを示しています。

ファイルシステム上のシンボリックリンクを説明する図

リンク先の内容を変更すると、シンボリックリンクから開いた場合にも変更後の内容が表示されます。

反対に、リンク先を削除・移動すると、シンボリックリンクからアクセスできなくなります。

シンボリックリンクは何のために使う?

実務では、設定ファイルや共有ディレクトリ、アプリケーションのバージョン切り替えにも使われます。

用途 利用例
長いパスを短くする /var/www/example/releases/20260723currentで開く
複数の場所から参照する 共有ファイルを各ユーザーのホームから参照する
設定ファイルを切り替える 有効にする設定だけを別ディレクトリからリンクする
バージョンを切り替える currentの参照先を新しいリリースへ変更する
コマンド名を統一する バージョン付き実行ファイルへ共通名を付ける

Webアプリのデプロイでは、次のような構成があります。

/var/www/example/
├── current -> releases/20260723
└── releases/
    ├── 20260720/
    └── 20260723/

Webサーバーはcurrentを参照し、リンク先の変更でバージョンを切り替えます。

ln -sコマンドでシンボリックリンクを作成する

シンボリックリンクの作成には、lnコマンドへ-sオプションを付けます。

基本書式は次のとおりです。

ln -s リンク先 リンク名

最初にリンク先、次に作成するリンク名を指定します。

ファイルへのリンクを作成する

練習用のディレクトリとファイルを作成します。

mkdir -p ~/symbolic-link-practice/original
cd ~/symbolic-link-practice
echo "InfraAcademy" > original/message.txt

message.txtへのシンボリックリンクを作成します。

ln -s original/message.txt message-link.txt

リンクから内容を確認してみましょう。

cat message-link.txt
InfraAcademy

実際に読み込まれるのはoriginal/message.txtです。

ディレクトリへのリンクを作成する

シンボリックリンクは、ファイルだけでなくディレクトリにも作成できます。

ln -s original original-link

リンクを経由してディレクトリ内を確認します。

ls original-link
message.txt

ディレクトリへのシンボリックリンクも作成できます。

ls -lでシンボリックリンクを確認する

作成したリンクは、ls -lで確認できます。

ls -l

表示例は次のとおりです。

lrwxrwxrwx 1 ryu ryu 20 Jul 23 10:00 message-link.txt -> original/message.txt
lrwxrwxrwx 1 ryu ryu  8 Jul 23 10:01 original-link -> original
drwxr-xr-x 2 ryu ryu 25 Jul 23 09:59 original

先頭がlになっている項目がシンボリックリンクです。

行の末尾には、リンク名 -> リンク先という形式で参照先が表示されます。

表示 意味
l シンボリックリンク
message-link.txt 作成したリンクの名前
-> リンク先を示す矢印
original/message.txt リンクへ記録されたパス

Linuxでは通常、アクセス可否はリンク先と途中のディレクトリ権限で決まります。

リンクに記録されたパスだけを確認したい場合は、readlinkコマンドを使います。

readlink message-link.txt
original/message.txt

実際に解決された絶対パスを確認する場合は、-fを付けます。

readlink -f message-link.txt
/home/ryu/symbolic-link-practice/original/message.txt

同じ目的でrealpathも利用できます。

realpath message-link.txt

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

シンボリックリンクには、絶対パスと相対パスのどちらも記録できます。

絶対パスで作成する

ln -s /home/ryu/symbolic-link-practice/original/message.txt message-absolute.txt

絶対パスは同じ場所を参照しますが、別環境へ移すとリンク切れになることがあります。

相対パスで作成する

ln -s original/message.txt message-relative.txt

相対パスは、シンボリックリンクが置かれているディレクトリを基準に解決されます。

コマンドを実行したカレントディレクトリを基準にするわけではありません。

次のような構成であれば、リンクとoriginalディレクトリをまとめて移動しても、位置関係が同じなら参照できます。

symbolic-link-practice/
├── message-relative.txt -> original/message.txt
└── original/
    └── message.txt

一式を別の場所へ移す場合は、相対リンクが使いやすいことがあります。

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

lnコマンドは、-sを付けなければハードリンクを作成します。

シンボリックリンクとハードリンクは、どちらも別名でファイルへアクセスできますが、仕組みが異なります。

比較項目 シンボリックリンク ハードリンク
作成コマンド ln -s 元 リンク ln 元 リンク
参照方法 パスを保存する 同じinodeを参照する
ファイルシステムをまたぐ 可能 原則できない
ディレクトリへの作成 可能 通常はできない
元ファイルを削除 リンク切れになる 内容へアクセスできる
ls -lの先頭 l 通常のファイルと同じ-
inode番号 元ファイルと異なる 元ファイルと同じ

inode番号は、ls -liで確認できます。

ln original/message.txt message-hard.txt
ls -li original/message.txt message-hard.txt message-link.txt

ハードリンクは同じinode、シンボリックリンクは異なるinodeになります。

元ファイルを削除した場合の違い

元ファイルを削除して動きを比較します。

rm original/message.txt

シンボリックリンクから開こうとすると、エラーになります。

cat message-link.txt
cat: message-link.txt: No such file or directory

ハードリンクが残っていれば、そこから内容を読み取れます。

cat message-hard.txt

ハードリンクは元ファイルのショートカットではなく、同じ実体に付けられた別の名前だからです。

リンク切れしたシンボリックリンクとは

リンクに記録されたパスが存在しない状態を、リンク切れやダングリングシンボリックリンクと呼びます。

次のような操作で発生します。

ln -s /tmp/not-found sample-link

リンク先が存在しなくても作成できます。

ls -l sample-link
lrwxrwxrwx 1 ryu ryu 14 Jul 23 10:20 sample-link -> /tmp/not-found

しかし、リンクを開くとエラーになります。

主な原因は、リンク先の削除・移動やパス指定ミスです。

リンク切れをfindで探す

カレントディレクトリ以下からリンク切れを探す場合は、次のコマンドを利用できます。

find . -xtype l

正常なシンボリックリンクも含めて探す場合は、次のように実行します。

find . -type l

削除前に利用状況を確認してください。

シンボリックリンクの参照先を変更する

シンボリックリンクの参照先を変える基本的な方法は、リンクを削除して作り直すことです。

rm message-link.txt
ln -s new/message.txt message-link.txt

rmで削除するのはリンクそのものです。

ln -sfnでリンクを置き換える

既存リンクを置き換える場合は、次のように実行できます。

ln -sfn new/message.txt message-link.txt

主なオプションは次のとおりです。

オプション 意味
-s シンボリックリンクを作成する
-f 既存のリンク先を置き換える
-n リンク先がディレクトリでも、そのリンク自体を対象にする

ディレクトリリンクの置換では-nを併用し、実行後に参照先を確認します。

シンボリックリンクを削除する

シンボリックリンクは、rmまたはunlinkで削除できます。

rm message-link.txt

または、次のように実行します。

unlink message-link.txt

リンク先のファイルやディレクトリは残ります。

ディレクトリリンクを削除するときの注意

ディレクトリを指すシンボリックリンクを削除するときは、リンク名の末尾へ/を付けない方が安全です。

rm original-link

リンク先のディレクトリを再帰的に削除するようなコマンドを安易に実行しないでください。

削除前に、次のコマンドで対象がリンクであることを確認しましょう。

ls -ld original-link
readlink original-link

シンボリックリンクをコピー・バックアップするときの注意

バックアップでは、リンクを保存するのか、参照先をコピーするのかを決めます。

たとえば、cp -aは属性を保ちながらコピーし、シンボリックリンクもリンクとして扱います。

cp -a source backup

一方、リンク先をたどるオプションを使用すると、リンクではなく参照先の内容がコピーされる場合があります。

tarrsyncでもリンクをたどるオプションを確認し、復元後のパスも検証します。

シンボリックリンクのよくある疑問

シンボリックリンクはWindowsのショートカットと同じですか?

役割は似ていますが、仕組みは同じではありません。

シンボリックリンクはファイルシステム上のリンクとして、多くのLinuxコマンドやアプリケーションから通常のパスのように扱われます。

シンボリックリンクにchmodは必要ですか?

Linuxでは通常、シンボリックリンク自身の権限表示はアクセス可否の判断に使われません。

リンク先のファイルと、そこへ到達するまでのディレクトリ権限を確認してください。

リンク先を編集すると元ファイルも変わりますか?

変わります。

リンクから開いているのはリンク先のファイルなので、保存した変更はリンク先へ反映されます。

リンクを削除すると元ファイルも消えますか?

rm リンク名unlink リンク名でリンクだけを削除した場合、リンク先は残ります。

ただし、リンクを経由してファイルを編集・削除するコマンドでは、リンク先が対象になる場合があります。

InfraAcademyのLinux中級講座でリンクを実践する

実際にリンクを作成し、元ファイルの変更や削除を試すと仕組みを理解できます。

InfraAcademyのLinux中級講座「ファイルの操作」では、圧縮・解凍、アーカイブ、ハードリンク、シンボリックリンクなどを学べます。

ブラウザ上のLinux環境でコマンドを実行できます。

次の順番で操作すると理解しやすくなります。

ファイルを作成する
→ シンボリックリンクを作成する
→ ls -liでinodeを確認する
→ ハードリンクを作成する
→ 元ファイルを削除する
→ それぞれのリンクからアクセスする

Linuxのディレクトリや基本コマンドに不安がある場合は、先にLinux入門講座から始めるのがおすすめです。

InfraAcademyのLinux中級講座を見る

まとめ

シンボリックリンクは、別のファイルやディレクトリのパスを記録した特殊なファイルです。

作成するときは、ln -s リンク先 リンク名の順番で指定します。

ls -lではリンク名 -> リンク先を確認でき、readlinkrealpathを使うと参照先のパスを表示できます。

シンボリックリンクはファイルシステムをまたいで作成でき、ディレクトリにも利用できます。一方、リンク先を削除・移動するとリンク切れになります。

ハードリンクは同じinodeを参照する別名であり、元の名前を削除しても実体が残っていればアクセスできます。

まずは練習用ディレクトリで、シンボリックリンクとハードリンクの両方を作成してみましょう。

元ファイルを変更・削除したときの違いを確認すると、リンクの仕組みを実践的に理解できます。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る