はじめに
この実験では、Linuxのln
コマンドと、ハードリンクとシンボリックリンクを作成するためのその実用的なアプリケーションについて学びます。この実験では、ln
コマンドの目的、ハードリンクの作成方法、およびシンボリックリンクの作成方法について説明します。これら2種類のリンクの違いとその使用例を理解します。この実験では、手順を追った説明と例を提供して、Linuxにおけるln
コマンドとそのファイルおよびディレクトリ管理機能を身につけるのを助けます。
この実験では、Linuxのln
コマンドと、ハードリンクとシンボリックリンクを作成するためのその実用的なアプリケーションについて学びます。この実験では、ln
コマンドの目的、ハードリンクの作成方法、およびシンボリックリンクの作成方法について説明します。これら2種類のリンクの違いとその使用例を理解します。この実験では、手順を追った説明と例を提供して、Linuxにおけるln
コマンドとそのファイルおよびディレクトリ管理機能を身につけるのを助けます。
このステップでは、Linuxにおけるln
コマンドの目的について学びます。ln
コマンドは、他のファイルやディレクトリを指す特殊なファイルであるリンクを作成するために使用されます。リンクには2種類あります。ハードリンクとシンボリック(ソフト)リンクです。
ハードリンクは、追加のオプションなしでln
コマンドを使用して作成されます。ハードリンクは、基本的に元のファイルのコピーですが、同じinode(ファイルメタデータ)と物理的な格納場所を共有します。これは、ファイルコンテンツに対して行われた変更がすべてのハードリンクに反映されることを意味します。
ハードリンクを作成するには、次のコマンドを実行します。
ln original_file hard_link_name
出力例:
$ ln file1.txt file1_hardlink.txt
シンボリックリンクは、ソフトリンクとも呼ばれ、ln
コマンドに-s
オプションを付けて作成されます。シンボリックリンクは、元のファイルまたはディレクトリへのポインタであり、ターゲットへのパスを含んでいます。ハードリンクとは異なり、シンボリックリンクはファイルシステムの境界を越えたファイルやディレクトリを指すことができます。
シンボリックリンクを作成するには、次のコマンドを実行します。
ln -s original_file symbolic_link_name
出力例:
$ ln -s file1.txt file1_symlink.txt
ハードリンクとシンボリックリンクの主な違いは、ハードリンクが元のファイルと密接に結びついているのに対し、シンボリックリンクがより柔軟で、ファイルシステム全体にわたるファイルやディレクトリを指すことができる点です。
このステップでは、ln
コマンドを使ってハードリンクを作成する方法を学びます。
まず、ハードリンクを作成するために使うサンプルファイルを作成しましょう。
touch file1.txt
echo "This is the original file." > file1.txt
次に、ln
コマンドを使ってfile1.txt
にハードリンクを作成しましょう。
ln file1.txt file1_hardlink.txt
オプションなしのln
コマンドはハードリンクを作成します。これは、file1_hardlink.txt
とfile1.txt
が今や同じinode(ファイルメタデータ)と物理的な格納場所を共有していることを意味します。一方のファイルに対して行われた変更は、もう一方にも反映されます。
ハードリンクが正しく作成されたことを確認しましょう。
ls -l file1.txt file1_hardlink.txt
出力例:
-rw-r--r-- 2 labex labex 25 Apr 12 12:34 file1.txt
-rw-r--r-- 2 labex labex 25 Apr 12 12:34 file1_hardlink.txt
両方のファイルが同じinode番号(2列目の「2」)を持っていることに注意してください。これは、それらが同じファイルへのハードリンクであることを示しています。
次に、元のファイルに変更を加えて、それがハードリンクにどのような影響を与えるか見てみましょう。
echo "This is an updated file." > file1.txt
cat file1.txt file1_hardlink.txt
出力例:
This is an updated file.
This is an updated file.
ご覧の通り、file1.txt
に加えられた変更がハードリンクfile1_hardlink.txt
にも反映されています。
ハードリンクは、同じファイルに複数の参照を作成したい場合に便利ですが、追加のストレージ空間を消費しません。ただし、ハードリンクはファイルシステムの境界をまたがることはできず、ディレクトリには作成できません。
このステップでは、ln
コマンドを使ってシンボリック(ソフト)リンクを作成する方法を学びます。
まず、シンボリックリンクを作成するために使う別のサンプルファイルを作成しましょう。
touch file2.txt
echo "This is the second file." > file2.txt
次に、-s
オプション付きのln
コマンドを使ってfile2.txt
にシンボリックリンクを作成しましょう。
ln -s file2.txt file2_symlink.txt
-s
オプションは、ln
コマンドにハードリンクではなくシンボリックリンクを作成するように指示します。
シンボリックリンクが正しく作成されたことを確認しましょう。
ls -l file2.txt file2_symlink.txt
出力例:
-rw-r--r-- 1 labex labex 23 Apr 12 12:34 file2.txt
lrwxrwxrwx 1 labex labex 8 Apr 12 12:34 file2_symlink.txt -> file2.txt
シンボリックリンクfile2_symlink.txt
の権限の先頭に「l」があることに注意してください。これは、それがシンボリックリンクであることを示しています。出力にはまた、file2_symlink.txt
がfile2.txt
を指していることも示されています。
ハードリンクとは異なり、シンボリックリンクはファイルシステムの境界を越えたファイルやディレクトリを指すことができます。これをディレクトリにシンボリックリンクを作成することで示しましょう。
mkdir dir1
ln -s dir1 dir1_symlink
ls -l dir1 dir1_symlink
出力例:
drwxr-xr-x 2 labex labex 4096 Apr 12 12:34 dir1
lrwxrwxrwx 1 labex labex 5 Apr 12 12:34 dir1_symlink -> dir1
ご覧の通り、dir1_symlink
はdir1
ディレクトリを指すシンボリックリンクです。
シンボリックリンクは、ハードリンクよりも柔軟であり、ファイルシステムの境界を越えたファイルやディレクトリを指すことができます。ただし、ターゲットファイルまたはディレクトリが移動または削除されると、リンクが切れるため、より脆弱になる場合もあります。
この実験では、Linuxにおけるln
コマンドの目的について学びました。このコマンドは、他のファイルやディレクトリを指すリンクを作成するために使用されます。また、2種類のリンク、つまりハードリンクとシンボリック(ソフト)リンクについても学びました。ハードリンクは、基本的に同じinodeと物理的な格納場所を共有する元のファイルのコピーであり、シンボリックリンクは元のファイルまたはディレクトリへのポインタであり、ファイルシステムの境界を越えることができます。さらに、ln
コマンドを使ってハードリンクとシンボリックリンクを作成する方法も学びました。