Linuxのシンボリックリンクとハードリンクの違いは?

Linuxにおけるシンボリックリンクおよびハードリンクは異なる2種類のリンク方式です。違いは以下のとおりです。

  1. ファイルの場所: シンボリックリンクはファイルへのパスを指す特殊なファイルで、リンクされたファイルのパス情報を保存しています。ハードリンクはファイルの i ノードへのリンクであるため、本質的には同じファイルの別のファイル名です。
  2. ファイルシステムをまたぐ:ソフトリンクは異なるファイルシステムにまたがることができます(つまり異なるディスクパーティション上のファイルにリンクすることができます)。一方、ハードリンクは同じファイルシステム内でのみ作成できます。
  3. ファイルサイズ:ソフトリンクは元ファイルのパス情報のみ保持した非常に小さなファイルなので、サイズは省略できます。一方ハードリンクは元ファイル自体とサイズは同じで、同じ i ノードを共有し同じディスクスペースを使用します。
  4. ファイルの削除時、ソフトリンクはそのリンク先ファイルが削除されてもリンク自体は残るものの、リンク先ファイルが存在しなくなるため「死リンク」と呼ばれます。一方、ハードリンクは同じiノードを指し示し続けるため、元のファイルが削除されてもハードリンク経由でファイルの内容にアクセスできます。
  5. ファイル名の変更:元ファイルの名前が変更された場合、シンボリックリンクは新しいファイルパスを指すようになるが、ハードリンクは引き続き元ファイルを指す。
  6. ディレクトリへのリンク:ソフトリンクはディレクトリへのリンクを作成できますが、ハードリンクはディレクトリへのリンクを作成できません。

軟リンクとハードリンクは用途や特性に若干の違いがあります。用途に応じて適切な方法を選択しましょう。

bannerAds