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

コンピューターアーキテクチャ

概要

シンボリックリンクとハードリンクの違いについてまとめる

前提

  • inode
    • データ構造
    • ファイルシステム上の属性情報(作成者、グループ、作成日時など)をデータとして持つ
    • ls -i1 /またはstat /でinode番号を確認できる

シンボリックリンクとは

  • 元のファイルまたはディレクトリのパスを参照するディレクトリエントリを追加
  • 実験
    touch a.md
    ln -s a.md a_symbolic_link.md // シンボリックリンクを作成
    ls -i1 a.md a_symbolic_link.md // inodeが違うことが確認できる
    
  • 元ファイルを移動すると参照不可
  • 元ファイルを削除すると削除される
  • 別のファイルシステムでも参照できる

ハードリンクとは

  • 元のファイルまたはディレクトリのinodeを参照するディレクトリエントリを追加
  • 実験
    touch a.md
    ln a.md a_hardlink.md // ハードリンクを設定
    ls -i1 a.md a_hardlink.md // inodeが同じことが確認できる
    
  • 元のファイルを移動しても影響無し
  • 元のファイルを削除しても削除されない
  • 同一ファイルシステム内のみ参照可能

参照