Linuxのリンクを扱う時に、誤ってリンク先のファイルを削除したことがあったので、ハードリンクとソフトリンクの違いをメモしておきます。
#ハードリンク
Linuxでは、それぞれのファイルにinode
と呼ばれる番号が割り振られています。ハードリンクは、inodeを直接参照しており、以下のような特徴があります。
特徴
- ディレクトリのリンクは不可
- パーティションをまたげない。
- 元ファイルを移動しても開くことができる。
- ハードリンクを削除すると、見れなくなる。(リンク先のinode番号が消え、ファイルの情報がなくなる)
コマンド
ln <参照先ファイルのパス> <リンク名>
でシンボリックリンクが作成できます。
ln <参照先ファイルのパス> <リンク名>
ソフトリンク(シンボリック)
inode
番号ではなく、パスでの参照となります。下記のような特徴があります。
特徴
- パスでファイルやディレクトリを参照できる。
- 元ファイルを移動したり、削除するとデットリンクになる。
コマンド
-s
のオプションをつけると、ソフトリンクになります。
ln -s <参照先ファイル or ディレクトリのパス> <リンク名>
リンク先の移動は、-P
オプション、リンクの削除は、unlinkで削除できます。
# ソフトリンク先への移動
cd -P <作成したリンク名>
# リンクの削除
unlink <作成したリンク名>
参考にしたリンク
下記のサイトを参考にさせていただきました。
[Linux] ln シンボリックリンクとハードリンクの違いと作り方