ln ハードリンクやシンボリックリンクを作る
ln [オプション] リンク元 [リンク名]試してみる
ln links/original.txt links/hard.txtハードリンクを作ります。同じ実体に、もう1つ名前が付きます。
ln -s original.txt links/soft.txt-s でシンボリックリンクを作ります。「original.txt」というパス文字列を持つ別のファイルです。
ls -li links先頭の列が inode 番号です。original.txt と hard.txt は同じ番号で、soft.txt は -> でリンク先を指しています。
rm links/original.txt元の名前を削除します。
cat links/hard.txtハードリンクは実体が残っているので、今まで通り読めます。
ls -l links/soft.txtシンボリックリンクはリンク先がなくなったので、リンクだけ残り、中身は読めなくなります(リンク切れ)。
主なオプション
-s | ハードリンクではなく、シンボリックリンクを作る |
|---|---|
-f | 同じ名前のファイルがあっても、削除して作る |
-v | 作成したリンクを表示する |
-i | 同名のファイルがあるとき、確認する |
解説
ハードリンクとシンボリックリンク
ファイルの実体は inode という番号で管理され、ファイル名はその inode への参照です。ハードリンクは、同じ inode に別の名前を付けるものです。元の名前を消しても、ほかの名前が残っていれば実体は消えません。
シンボリックリンクは、リンク先のパスを書いた別のファイルです。Windows のショートカットに近い働きです。リンク先を消すと、リンク切れになります。
違いのまとめ
| 項目 | ハードリンク | シンボリックリンク |
|---|---|---|
| inode | 元と同じ | 別 |
| ディレクトリへのリンク | 作れない | 作れる |
| 別のファイルシステムへのリンク | 作れない | 作れる |
| 元を削除した後 | 読める | リンク切れ |
書式の注意
シンボリックリンクの ln -s リンク先 リンク名 の「リンク先」は、そのまま文字列として記録されます。相対パスで書くと、リンクがあるディレクトリを起点に解釈されます。作業ディレクトリからのパスではない点に気をつけましょう。
リンクの数
ls -l の2列目の数字は、そのファイルのハードリンクの数です。ハードリンクを作ると増え、削除すると減ります。0になると実体が消えます。