gabuLog

趣味と考え事をつらつらと

リンクについて

概要

ファイルの実体にファイル名をつなぐことをリンクといい、シンボリックリンクハードリンクの2種類がある。

シンボリックリンク

windowsのショートカット、Macだとエイリアスと同じ。

ファイルやディレクトリを別の場所から参照するために、別名をつけてリンクとして別の場所に作成するためにシンボリックリンクを作成する。

ハードリンク

linuxでは全てのファイルはinodeと呼ばれるファイルシステム上で一意のデータを参照する。

inodeとはファイルやディレクトリの所有者や更新日時、ファイルサイズなどの属性情報が書かれているデータ。

ディスク上でデータに対して一意なinodeが存在し、それに対して必ず1つのハードリンクが存在する。

なので、ファイル、ディレクトリが作成された時に少なくとも1つのinodeとハードリンクでつながる。

別途ハードリンクを作成する場合、一つのデータに複数のハードリンクで参照するファイルやディレクトリが存在する。

ハードリンクはinodeを参照する。

シンボリックリンクとハードリンクの違い

シンボリックリンクは元データが削除・移動されるとシンボリックリンクが無効になる。ディレクトリに対しても作成可能。

ハードリンクは元データが削除・移動されても参照先がinodeなのでハードリンクの参照が消えるわけではない。

lnコマンド

ln -s [ファイル名] [リンク名]

シンボリックリンクの作成。

ln -s コマンドの実行例

ln -s コマンドの実行例

元データが削除されると、参照できない。

シンボリックリンクの元データ削除された場合

シンボリックリンクの元データ削除された場合

ln [ファイル名] [リンク名]

ハードリンクの作成。

ln -liコマンド実行時、先頭にあるのがinode番号。

同じになっていることが確認できる。

lnコマンドの実行例

lnコマンドの実行例

元データを削除した場合でも、作成したハードリンクを参照できる。

ハードリンクの元データを削除した場合

ハードリンクの元データを削除した場合

まとめ

リンクの作成方法と違いについて、記載しました。

使用用途についてはわからないので、これから理解していきたいです。