ディレクトリとは? iノードとは?
ディレクトリは、ディレクトリに所属するファイルの
- ファイル名
- iノード番号
を記録したファイル。
ディレクトリもファイルの一種なのらしい。
iノードは
- iノード番号
- ファイル種別
- ファイルサイズ
- アクセス権
- 所有者
- 所有グループ
- 実体の保存場所
などの情報のこと。Linux上のファイルはすべてiノードで管理されているらしい。
つまり
- ディレクトリ:
→「こんな名前のファイルがありますよ!詳しい情報はここに書いてますよ!」な情報を保存するファイル - iノード:
→ファイル名を除く、ファイルについての全ての情報のこと。
みたいな感じ。
ハードリンクとは?
図のとおり。
シンボリックリンクとは?
図のとおり。
違い、共通点
基本的にシンボリックリンクを使っておけばOKらしい。
というかハードリンクって逆にどういう場合に使えばいいんだろう?
・・と思って調べてみたら以下のようなケースで有効活用されてるらしい。
私が知っている中で、ハードリンクを最も効果的に使っているのは Cyrus IMAP Server と呼ばれる IMAP サーバのソフトで、このソフトの場合、基本的にはメール1通が1ファイルで保存されるのですが、複数の人に同じメールを送った場合、保存されるのは1通分で、各ユーザのメールボックスのファイルとしてハードリンクを作ります。
こうすると、人数分のファイルを作らないので、それだけディスクの節約になるのと同時に、誰かがメールを削除しても、全く問題ありません。もし、これをシンボリックリンクにしようとすると、ユーザのメールボックスとは無関係にファイルを作って、ユーザのメールボックスにはシンボリックリンクを置く、といったことになると思いますが、じゃぁ、全員が削除したときに、この本物のファイルを削除するのはどうするか? という問題が残ります。
ハードリンクであれば、全員が削除して本当に必要が無くなったときには、本体も削除されていることになるので、その点でもシンボリックリンクよりスマートです。
おわり
コメント