1. 概要

Linuxマシンでは、既存のファイルへのリンクを作成できます。 Unixのリンクは、ファイルへのポインタまたは参照と考えることができます。 言い換えれば、それらはファイルにアクセスするためのショートカットのようなものです。 必要な数のリンクを作成できます。

このチュートリアルでは、ハードリンクとシンボリックリンクの2種類のリンクについて簡単に説明します。 それらの違いについてさらに説明します。

2. ハードリンク

Unixベースのオペレーティングシステムのファイルは、データブロックとiノードで構成されます。 データブロックには、実際のファイルの内容が格納されます。 一方、 iノードは、ファイル属性(ファイル名を除く)とディスクブロックの場所を保存します。

ハードリンクは、元のファイルと同じ基になるiノードを指す単なる別のファイルです。したがって、同じ物理ファイルの場所を参照します。

ln コマンドを使用して、ハードリンクを作成できます。

ls -l
-rw-rw-r-- 2 runner3 ubuntu 0 Sep 29 11:22 originalFile

ln originalFile sampleHardLink

ls -l
-rw-rw-r-- 2 runner3 ubuntu 0 Sep 29 11:22 originalFile
-rw-rw-r-- 2 runner3 ubuntu 0 Sep 29 11:22 sampleHardLink

マップされたiノード番号をすばやく確認しましょう。

ls -i
2835126 originalFile
2835126 sampleHardLink

これらのファイルは両方とも、同じiノードを指しています。 これにより、後で元のファイルを削除しても、作成されたハードリンクを使用してそのコンテンツにアクセスできます。

ただし、注意してくださいディレクトリのハードリンクを作成することはできません。 また、ハードリンクは、ネットワークにマップされたディスク間のように、ファイルシステムの境界を越えることはできません。

3. シンボリックリンク

シンボリックリンクまたはソフトリンクは、元のファイルのパスだけを保存し、その内容を保存しない新しいファイルです。 元のファイルが移動または削除された場合、ソフトリンクは機能しません。

次に、ソフトリンクまたはシンボリックリンクを作成しましょう。

ln -s originalFile sampleSoftLink

ls -l
-rw-rw-r-- 1 runner1 ubuntu  0 Sep 29 12:16 originalFile
lrwxrwxrwx 1 runner1 ubuntu 12 Sep 29 12:16 sampleSoftLink -> originalFile

ハードリンクとは異なり、ソフトリンクまたはシンボリックリンクは、元のファイルとは異なるiノード番号のファイルです。

ls -i
2835126 originalFile
2835217 sampleSoftLink

ディレクトリのソフトリンクを作成することが許可されています。 さらに、ソフトリンクを使用すると、さまざまなファイルシステム間でファイルをリンクできます。

4. 違い

ソフトリンクまたはハードリンクとは何かを理解したので、主な違いを簡単にまとめましょう。

  • ハードリンクのinode番号は元のファイルと同じであるため、そのコピーと考えることができます。 一方、ソフトリンクは元のファイルのファイルの場所のみを保存する新しいファイルです
  • 元のファイルが移動または削除された場合でも、ハードリンクを使用してそのコンテンツにアクセスできます。 ただし、そのファイルのすべてのソフトリンクは無効になります
  • ハードリンクとは異なり、ディレクトリのソフトリンクを作成できます。 ソフトリンクはファイルシステム全体にまたがることもできます

5. 結論

このクイックチュートリアルでは、すべてのUnixベースのオペレーティングシステムで使用されるハードリンクとシンボリック/ソフトリンクについて学習しました。