リンクの作成:ハードリンクとシンボリックリンク
1つのファイルを複数の場所から参照します。ハードリンクとシンボリックリンクの違い、lnでの作成方法、それぞれの使いどころを学びます。
「リンクの作成:ハードリンクとシンボリックリンク」はCoddyKit上の無料Linux Command Line & Bash Scripting Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Command Line & Bash Scripting Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。
リンクとは
リンクを使うと、複数の名前から同じファイルデータを参照できます。Linux にはハードリンクとシンボリックリンク(ソフトリンク)の2種類があります。
inode:実体としてのファイル
ディスク上では、ファイルはデータとメタデータを保持するinodeです。ファイル名は、inode を指すディレクトリエントリにすぎません。これがリンクを理解する鍵です。
ハードリンクを作成する
ハードリンクは、同じ inode を指す別のディレクトリエントリです。オプションを付けずに ln を使います。
ln original.txt copy.txt
# both names share the same dataハードリンクの動作
どちらの名前も1つの inode を指しているため、どちらから編集しても同じデータが変更されます。ファイルは最後のリンクが削除されたときにのみ削除されます。
rm original.txt # data still reachable via copy.txtハードリンクの制限
ハードリンクはファイルシステムをまたいで作成できず、通常はディレクトリにもリンクできません。また、別のディスクやパーティション上のファイルを指すこともできません。
シンボリックリンクを作成する
シンボリックリンクは、別のファイルへのパスを保存する小さなファイルです。ln -s で作成します。
ln -s /var/www/site current
# current -> /var/www/siteシンボリックリンクの動作
シンボリックリンクが指すのは inode ではなく名前です。対象が削除または移動されると、シンボリックリンクは壊れた(ダングリング)リンクになります。
ls -l current
current -> /var/www/siteファイルシステムをまたぐシンボリックリンク
ハードリンクとは異なり、シンボリックリンクはファイルシステムをまたぐことができ、ディレクトリも指せます。そのため、リリース用フォルダーの切り替えなどに使われます。
ls でリンクを見分ける
ls -l を使うと、シンボリックリンクは矢印とファイル種別 l で表示されます。ハードリンクでは、リンク数の列に inode を共有する名前の数が表示されます。
ls -li
12345 -rw-r--r-- 2 user ... # count 2 = hard linkedリンクを削除する
シンボリックリンクに rm を使うと、対象ではなくリンクが削除されます。注意してください。ディレクトリへのシンボリックリンクに末尾のスラッシュを付けると、予期しない動作になることがあります。
rm current # removes only the symlink使い分け
ショートカット、ファイルシステムをまたぐ参照、ディレクトリ(最も一般的)にはシンボリックリンクを使います。同じファイルシステム上で、同一データに対して同等の複数の名前が必要な場合はハードリンクを使います。
クイックチェック
理解度を確認しましょう。
まとめ
リンクについて学びました。ハードリンクは同じ inode に名前を追加します(同じファイルシステム上でのみ、ディレクトリは不可。最後のリンクがなくなるまでデータは残ります)。一方、シンボリックリンク(ln -s)はパスを保存し、ファイルシステムをまたいだりディレクトリを指したりできますが、リンク切れになることがあります。
よくある質問
「リンクの作成:ハードリンクとシンボリックリンク」レッスンは無料ですか?
はい。「リンクの作成:ハードリンクとシンボリックリンク」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Command Line & Bash Scripting Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。
「リンクの作成:ハードリンクとシンボリックリンク」で何を学びますか?
1つのファイルを複数の場所から参照します。ハードリンクとシンボリックリンクの違い、lnでの作成方法、それぞれの使いどころを学びます。 ブラウザで直接実行するハンズオンコードでLinux Command Line & Bash Scripting Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Command Line & Bash Scripting Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Command Line & Bash Scripting Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「リンクの作成:ハードリンクとシンボリックリンク」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Command Line & Bash Scripting Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Command Line & Bash Scripting Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ファイル内容の表示(cat、less、head、tail)
- ファイル権限の理解(chmod、chown)
- ファイルの検索(find、grep)
- リンクの作成:ハードリンクとシンボリックリンク