【Linux】ハードリンクとシンボリックリンクの違い

Linuxにおけるハードリンクとシンボリックリンクの違いについてまとめました。

リンク

リンクは、Windows のショートカットように「ファイルが別のディレクトリ にあるように扱える機能です。
リンクにはファイルの存在場所の情報が記録され、1つのファイルに対して複数のリンクを作成できます。
リンクは、「ハードリンク」と「シンボリックリンク」の2種類があります。

ハードリンク

ハードリンクは、1つのファイルに複数の名前を割り当てる機能。全てのハードリンクが削除されるまで、リンク先の元ファイルは削除されない。異なるディレクトリで同一ファイルを管理する際に、ディスク容量を削減できる。
異なるファイルシステムやディレクトリに対してハードリンクを使うことはできない。

「ls -l」 コマンドを実行したときの表示結果のうち、第2項目でファイルのリンクカウント(ハードリンクの数)を確認できます。

$ ls -l 

リンクカウント(ハードリンクの数)は、リンクファイルを作成するごとに増え、0になると実体ファイルが削除されます。

シンボリックリンク

シンボリックリンクは、ファイル本体の位置情報のみ記録しているファイルで、
ファイルだけでなくディレクトリに対しても作成でき、ハードリンクと異なり、異なるファイルシステム間でリンクを作成できます。また、シンボリックリンクが残った状態でファイル本体を削除することが可能です。
「ls -l」コマンドでシンボリックリンクの情報は確認できないため、自分で管理する必要があります。

することができますが、シンボリックリンクは確認することができないため、 自分でリンクを管理しておく必要があります。

リンクの作成(lnコマンド)

lnコマンドは、ファイルやディレクトリのリンクを作成します。

ln [オプション] 元ファイル リンクファイル
オプション 概要
-b 上書きや削除されるファイルのバックアップを作成
-f リンク先に同名ファイルがある場合は削除
-i リンク先に同名ファイルがあれば問い合わせする
-s シンボリック・リンクを作成
-v コピー前に各ファイルを表示

ハードリンクの作成

$ ln sample.txt sample.lnk
$ ls -il

シンボリックリンクの作成

$ ln -s sample.txt sample.lnk
$ ls -il

関連ページ

【LinuC】試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
LPICの試験対策と例題まとめ
LPICの試験対策と例題(学習サイト)についてまとめました。
【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。

コメント