ハードリンクとシンボリックリンク
リンクとはファイルの別名を構成し、
同じファイルにアクセスできるようにする仕組みです。
Linuxでは2種類のリンクファイルが用意されています。
ハードリンク
- 元のファイルとリンクファイルでiノードとファイルの実態を共有する仕組み
- 元のファイルが削除されてもアクセスできる
シンボリックリンク
実際に使ってみる
リンクをつくるにはln
コマンドを使います
ln
コマンド書式
ln [option] リンク元 リンク
Option
-f
リンク先があった場合上書き-s
シンボリックリンクを作成
ln
コマンドでリンクを作る↓
> touch original.txt > ls original.txt > ln original.txt hard.ln > ln -s original.txt symbol.ln > ls -li *.ln 63007659 -rw-r--r-- 2 [user] staff 0 3 21 14:12 hard.ln 63007696 lrwxr-xr-x 1 [user] staff 12 3 21 14:13 symbol.ln@ -> original.txt
シンボリックリンクはls -l
で見たときファイルの種類がlになってる
リンクの中身を参照してみると、オリジナルと同じになっている
> echo "test" > original.txt > cat hard.ln test > cat symbol.ln test
リンク元であるオリジナルを消してみる
> rm -f original.txt > ls -l *.ln -rw-r--r-- 1 [user] staff 5 3 21 14:28 hard.ln lrwxr-xr-x 1 [user] staff 12 3 21 14:13 symbol.ln@ -> original.txt > cat hard.ln test > cat symbol.ln cat: symbol.ln: No such file or directory
ハードリンクは既存のファイルとiノードを共有する仕組みなので,
オリジナルファイルが削除されてもリンクファイルはiノードを引き続き参照できる。
リンクファイルも削除されてリンク数が0になったらiノードが解放される。
シンボリックリンクはオリジナルのパスが記録されているだけなので
オリジナルが削除されたらファイルの内容に参照できなくなる。