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

ディレクトリとは? iノードとは?

ディレクトリとは? iノードとは?

ディレクトリは、ディレクトリに所属するファイルの

  • ファイル名
  • iノード番号

を記録したファイル。

ディレクトリもファイルの一種なのらしい。

 

iノードは

  • iノード番号
  • ファイル種別
  • ファイルサイズ
  • アクセス権
  • 所有者
  • 所有グループ
  • 実体の保存場所

などの情報のこと。Linux上のファイルはすべてiノードで管理されているらしい。

 

つまり

  • ディレクトリ:
    →「こんな名前のファイルがありますよ!詳しい情報はここに書いてますよ!」な情報を保存するファイル
  • iノード:
    →ファイル名を除く、ファイルについての全ての情報のこと。

みたいな感じ。

ハードリンクとは?

ハードリンクとは?

図のとおり。

シンボリックリンクとは?

シンボリックリンクとは?

図のとおり。

違い、共通点

ハードリンクシンボリックリンク
作り方ln hoge1.txt hoge2.txtln -s hoge1.txt hoge2.txt
ファイルへの作成はできる?
ディレクトリへの作成はできる?
別のパーティションへの作成はできる?
アクセス権は?それぞれ別々のアクセス権が適用されるリンク元のアクセス権が適用される
元ファイルを消してもリンクからアクセスできる?できるできない
リンクを消すと元ファイルはどうなる?

残る

ファイルの種類は?

-と表示される

lと表示される

基本的にシンボリックリンクを使っておけばOKらしい。

 

というかハードリンクって逆にどういう場合に使えばいいんだろう?

・・と思って調べてみたら以下のようなケースで有効活用されてるらしい。

私が知っている中で、ハードリンクを最も効果的に使っているのは Cyrus IMAP Server と呼ばれる IMAP サーバのソフトで、このソフトの場合、基本的にはメール1通が1ファイルで保存されるのですが、複数の人に同じメールを送った場合、保存されるのは1通分で、各ユーザのメールボックスのファイルとしてハードリンクを作ります。

こうすると、人数分のファイルを作らないので、それだけディスクの節約になるのと同時に、誰かがメールを削除しても、全く問題ありません。もし、これをシンボリックリンクにしようとすると、ユーザのメールボックスとは無関係にファイルを作って、ユーザのメールボックスにはシンボリックリンクを置く、といったことになると思いますが、じゃぁ、全員が削除したときに、この本物のファイルを削除するのはどうするか? という問題が残ります。

ハードリンクであれば、全員が削除して本当に必要が無くなったときには、本体も削除されていることになるので、その点でもシンボリックリンクよりスマートです。

引用:Linuxのシンボリックリンクとハードリンクはどう使い分けますか… – 人力検索はてな

 

おわり

Linux
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

タイトルとURLをコピーしました