【はーどりんく】

ハードリンク とは?

公開:
💡 1冊の本に、入口となる名前をもう1つ

同じファイルの実体に複数の名前を付ける仕組み。Linuxでは同じファイルシステム内の同じinodeを参照し、ファイル内容や権限を共有します。

📌 このページのポイント
2つの名前が、1つのファイルを指す 名前 A report.txt 名前 B copy-name.txt 同じ inode 実体は1つ 内容・権限を共有 1つの名前を消しても、別の名前から使える 独立したコピーやバックアップではない 別ファイルへの置き換えは、共有が変わる
Linuxの通常ファイルの例。2つの矢印は名前から同じファイルへの参照。inode自体が内容の全バイトを格納するという図ではない。同じ実体を指す間、内容や権限を共有する。
ひよこ ひよこ
ハードリンクも、行き先を書いたファイルなの?
ペンギン先生 ペンギン先生
シンボリックリンクとは違い、同じファイルの実体に付いた別の名前だよ。Linuxなら同じinodeを参照するんだ。入口が2つあっても本は1冊、というイメージだね。
ひよこ ひよこ
片方から書き込んだら、もう片方も変わるの?
ペンギン先生 ペンギン先生
同じ実体への書き込みなら、どちらの名前で開いても変更後の内容が見えるよ。内容だけでなく所有者や権限も共有するから、独立したバックアップではないんだ。
ひよこ ひよこ
元の名前を消したら、もう一方は使えなくなるの?
ペンギン先生 ペンギン先生
2つのハードリンクのうち1つを消しても、残り1つから使えるよ。どちらが本物という区別はないんだ。Linuxでは最後の名前を消しても、プロセスが開いている間はファイルの実体が残るよ。
ひよこ ひよこ
名前が2つあれば、ずっと同じ内容になるの?
ペンギン先生 ペンギン先生
名前が同じ実体を指し続ける間だけだよ。アプリが保存時に一時ファイルを作り、その名前で置き換える方式だと、片方が別の実体に変わることがあるんだ。Linuxでは別のファイルシステムへハードリンクを作ることもできないね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ハードリンク」って出てきたら「1つのファイルを指す複数の名前」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hard Link」 = 同じファイル実体へのリンク
💬 パス名を保存するソフトリンクと区別して、実体を共有するリンクを指す呼び名だよ

参考資料

← 用語集にもどる