このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンド演習05

以下のコマンドの演習を行います

ハードリンクとシンボリックリンクの違いを確認する。

実際にコマンド操作を行いながら、Linuxの操作に慣れていきましょう。

演習01:元となるファイルの作成

・「note」ファイルを作成します。

$ echo "This is note." > note
演習02:ハードリンクファイルの作成

・ハードリンクファイル「note.hard」を作成します。

$ ln note note.hard
演習03:シンボリックリンクファイルの作成

・シンボリックリンクファイル「note.sym」を作成します。

$ ln -s note note.sym
演習04:i ノードの確認

・iノードを確認します。

$ ls -i note note.hard note.sym
35718196 note  35718196 note.hard  35718202 note.sym

 ハードリンクファイルは元の「note」と同じ iノード番号を持っています。※この iノード番号は、実行環境により変わります。

シンボリックリンクは元の「note」の iノード番号と異なります。

この状況を図にまとめます。


・元のファイルである「note」ファイル、ハードリンクファイル、シンボリックリンクファイルの内容を表示します。

$ cat note
This is note.
$ cat note.hard
This is note.
$ cat note.sym
This is note.
演習05:ハードリンクとシンボリックリンクの違いを確認

・元のファイルである「note」を削除します。

元のファイルである「note」ファイル、ハードリンクファイル、シンボリックリンクファイルの内容を表示します。

$ rm note
$ cat note
cat: note: そのようなファイルやディレクトリはありません
$ cat note.hard
This is note.
$ cat note.sym
cat: note.sym: そのようなファイルやディレクトリはありません

 「note」ファイルは削除したため、もちろん、ありません。ハードリンクファイルは、同じように表示されます。それは、「note」と同じ iノード番号で同じ場所を指示しているからです。

 シンボリックリンクファイルでは「そのようなファイルやディレクトリはありません」と表示されます。シンボリックリンクは、あくまで、ファイルへの参照先(ポインタ)を格納しているにすぎなく、参照先のファイルがなくなれば、当然ながら、アクセスすることができません。


 ファイルの内容である「This is note.」は、まだ、ディスク上に残っています。それでは、ハードリンクファイルる「note.hard」を削除した場合は、どうなるでしょうか?

Linuxにおいて、

ファイルを削除するということは、ファイル名と iノードへのリンクを切断する。

と、いうことを意味します。

リンクが切断されるだけでファイルの内容は、まだ、残っています。新しいファイルで上書きされるまで残ることになります。