lnコマンド ハードリンクとシンボリックリンク
Sponsored Links
皆さんこんにちは
お元気ですか?い、いかん胃が、胃が…
さて、皆さん色々なものでリンクを作成しています。
リンクとは
Windowsのショートカットみたいなイメージです。
つまり、場所だけ記録してあって、飛ぶことができます。
因みに、リンクの種類には2種類あり、ハードリンクとシンボリックリンクがある。
ハードリンク
ファイルの実体を指し示して共有する。(inodeの共有)
※inode番号
ファイルやディレクトリに割り振られる、重複しない番号
ユーザーID,グループID,更新日時,Permission,ファイル生成時間、更新日時
シンボリックリンク
ファイルのパスを示す擬似的なファイル。
つまり、元ファイルがなくなると中身を見ることができません。
2つのリンクの違い
現在、以下の様なディレクトリ構造になっているとします。
2つのリンクを実際にやってみましょう。
ls
test.txt
ハードリンク
コマンドの流れはハードリンクを作り、ファイル詳細を確認、元ファイルを消し、内容を見てるか確認する。
ln text.txt hardlink.txt ls -li 925325541 -rw-r--r-- 2 Tereka staff 8 6 27 10:06 hardlink.txt 925325541 -rw-r--r-- 2 Tereka staff 8 6 27 10:06 text.txt rm text.txt cat hardlink.txt
inodeを共有しているので、マスターを壊してもリンクカウントが0にならないので
ファイル自体を閲覧することができます。
シンボリックリンク
コマンドの流れは上記と同様ですが、ハードリンクでなくシンボリックリンクを作る。
ln -s text.txt symbolic_link.txt ls -li 925332357 lrwxr-xr-x 1 Tereka staff 8 6 27 10:12 symbolic_link.txt -> text.txt 925325541 -rw-r--r-- 1 Tereka staff 8 6 27 10:06 text.txt cat symbolic_link.txt #中身は見れます。 rm text.txt cat symbolic_link.txt cat: symbolic_link.txt: No such file or directory
こちらは、ファイルパスを参照しているので、大元のファイルが消されると自動的にリンクも無効になります。
まとめ
端的に言うと、ハードリンク=コピーとシンボリックリンク=リンクの違いです。