ブログ

ハードリンク・シンボリックリンクを作成する方法

at_shiita.ishigaki
2022年1月19日 10時49分

ハードリンクとは、一つのファイルに複数の実名を付ける機能です。
ハードリンクを作成するにはlnコマンドを使用します。
※ここでは例として、hoge.txtのハードリンクをfuga.txtに作成します。

[armadillo ~]# echo hoge > hoge.txt
[armadillo ~]# ln hoge.txt fuga.txt
[armadillo ~]# cat fuga.txt
hoge
[armadillo ~]# echo fuga >> fuga.txt
[armadillo ~]# cat hoge.txt
hoge
fuga

上記のように、fuga.txtの変更はhoge.txtにも反映されていることが確認できます。 ハードリンクは同じinodeを使用しているため、ハードリンクか調べるには、同じinodeを使用しているかを調べることで確認できます。
inodeを表示するにはls -iコマンドを使用します。

[armadillo ~]# ls -i
177137 fuga.txt  177137 hoge.txt

上記のように、hoge.txtとfuga.txtは同じinodeを使用しているため、ハードリンクになっていることが確認できます。
ハードリンクはhoge.txtを削除してもfuga.txtにはアクセスすることができます。

[armadillo ~]# rm hoge.txt
[armadillo ~]# cat fuga.txt
hoge
fuga

次に、シンボリックリンクを作成する方法について紹介します。
シンボリックリンクは一つのファイルに別名を付ける機能です。
ハードリンクを作成するにはln -sコマンドを使用します。

[armadillo ~]# ln -s hoge.txt piyo.txt
[armadillo ~]# cat piyo.txt
hoge
fuga

シンボリックリンクかどうかを確認するには、ls -lコマンドを使用します。

[armadillo ~]# ls -l piyo.txt
lrwxrwxrwx 1 atmark atmark 8  1月 20 01:12 piyo.txt -> hoge.txt

シンボリックリンクはhoge.txtを削除すると、piyo.txtにはアクセスすることができなくなります。

[armadillo ~]# rm hoge.txt
[armadillo ~]# cat piyo.txt
/bin/cat: piyo.txt: No such file or directory

シンボリックリンクを解除するにはunlinkコマンドを使用します。

[armadillo ~]# unlink piyo.txt