人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linuxのシンボリックリンクとハードリンクはどう使い分けますか?
どう違うのかよくわかりません。
それとも一方が新しくて一方は古く使われてない概念でしょうか?
場面も含めて例を教えてください。

●質問者: MASHMASH
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Linux シンボリックリンク ハード リンク 概念
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● e55ind
●23ポイント

ハードリンクは、リンクを削除したら実体も削除される

シンボリックリンクは、リンクを削除しても削除されるのはリンクのみ

http://q.hatena.ne.jp/answer

◎質問者からの返答

ありがとうございます!


2 ● JULY
●23ポイント

ソフトリンク - Wikipedia

ハードリンク - Wikipedia

まず、よく言われるのは、パーティションをまたがっている場合は、ハードリンクは使えないので、シンボリックリンクである必要があります。なので、基本的にはシンボリックリンクの方がオールマイティで使える、という感じはあります。

ただ、シンボリックリンクは Windows のショートカットファイルと同様に、本物のファイルがあって、そこへのショートカット、という意味合いなので、リンク先の本物のファイルが無いのに、シンボリックリンクだけが存在する、という状況がありえます。

それに対し、ハードリンクの場合は、「どっちが本物」という概念がありません。例えば、/tmp/foo に対して /tmp/bar というハードリンクを作った後に /tmp/foo を削除しても、ちゃんと /tmp/foo の中身が残っています。下記のように操作して見ると分かりやすいでしょう。

# cd /tmp
# echo "foo" >foo
# cat foo
foo
# ln foo bar
# rm foo
rm: remove 通常ファイル `foo'? yes
# cat bar
foo
#

ハードリンクを使っているケースでよく見かけるのは、/bin や /usr/bin の下に有るプログラムで、実体は同じなんだけど、どういうファイル名で呼ばれたかで挙動が代わる物があります。

例えば、ファイル圧縮に使われる gzip ですが、展開するための gunzip や、展開して中身を出力する zcat が、ハードリンクになっています。

# cd /bin
# ls -l gzip gunzip zcat
-rwxr-xr-x 3 root root 62228 1月 21 02:44 gunzip
-rwxr-xr-x 3 root root 62228 1月 21 02:44 gzip
-rwxr-xr-x 3 root root 62228 1月 21 02:44 zcat

まぁ、この場合、どれか一つをメインにして、残りでをシンボリックリンクでも構わない、と言えば、構わないのですが(^^;。

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

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

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

◎質問者からの返答

ありがとうございます。凝ったら凝ったで凝った問題が(笑)


3 ● km1967
●22ポイント

シンボリックリンクはファイル実体のコピーを作るような。つまり、シンボリックリンクが影で、実体は別に存在する。

ハードリンクはファイル実体(iノード)そのものを指す。つまり、実体が2つ(以上)できる。

このため、ハードリンクは無限ループに陥る可能性がある。またデバイスを跨いでリンクを張ることができない(iノード番号そのものであるため)。このため、あまり使い勝手はよろしくない。

http://itpro.nikkeibp.co.jp/article/Keyword/20070928/283250/

◎質問者からの返答

わかりやすい! ありがとうございます。


4 ● dacks1
●22ポイント

これは結構わかりやすい例だと思いますがどうでしょうか↓

http://www.itmedia.co.jp/help/tips/linux/l0192.html

http://www.itmedia.co.jp/help/tips/linux/l0058.html

◎質問者からの返答

確かにいい説明ですね。ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ