Linuxコマンドを使用したシンボリックリンクとハードリンクの作成
1. 概要
Linuxマシンでは、既存のファイルへのリンクを作成できます。
このチュートリアルでは、ハードリンクとシンボリックリンクの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ベースのオペレーティングシステムで使用されるハードリンクとシンボリック/ソフトリンクについて学習しました。