- ベストアンサー
ハードリンクのメリット
シンボリックリンクとハードリンクがあるとおもうのですが シンボリックリンクとはWindowsのようなショートカットでショートカットを削除してもリンク先のファイルは消えない認識です。 一方ハードリンクはショートカットとリンク先が連動していてショートカットを削除するとリンク先のファイルも消える認識です。 ハードリンクって何のメリットがあって何に使えるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1つファイルが存在していてそれに対して、 2箇所からハードリンクされていたらファイルシステム上では パスやファイル名は異なるけどinodeは同じというファイルが 3つ存在することになります。 (ls -liで inodeが確認できます) このときストレージで消費される容量は3つ分でなく1つ分となります。 そして、その3つとも削除されたときにファイルの実体(inode)が消されます。 ですので 「ハードリンクはショートカットを削除するとリンク先のファイルも消える認識です。」 は誤りですね。 これに、どんなメリットがあるのかということなのですが 私は、ハードリンクのこの特徴をファイルのバックアップの容量削減に利用しています。 たとえば、サーバーAの特定パーティションに総容量100Gの ファイルが会ったとしてこれを、 2022年4月1日にサーバーBの/backup/20220401/の下にバックアップしたとします。 同様にして、翌日の4月2日の全ファイルを/backup/20220402/にバックアップしたとします。 このように単純にバックアップを繰り返すと 1週間で、100Gの7倍の700Gのストレージ容量を消費することなります。 全く同じファイルが多重に存在しているからですが、これは無駄ですね。 そこで、私は変更されていないファイルについては、 サーバーA→B間でコピーすることはしないで、前日のバックアップファイルへのハードリンクにしています。 これで必要な容量を、700Gから 100G+変更されたファイル容量だけに削減できることになります。 しかも、シンボリックリンクを使って 4月1日のバックアップでは実体ファイル 4月2日では、4月1日のファイルへのシンボリックリンクファイル のようにして、容量削減した場合だと、 バックアップを確保する期限が切れて4月1日のバックアップを削除してしまうと 4月2日のバックアップからもファイルを取得できなくなくなりますが、 ハードリンクだと、全てのハードリンクが消えるまで残ってくれるのでそのような心配がなくなります。 さらに、変更したファイルのみをバックアップする差分バックアップと違って サーバー間のファイルの転送量としては差分バックアップと同じだけど バックアップ先にあるファイルはフルバックアップと同じになるので、 バックアップしたディレクトリごとtarやrsyncでコピーすることで、 クラッシュしてしまったサーバーを過去の状態に戻すということも簡単にできてしまいます。
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19840)
>ハードリンクって何のメリットがあって何に使えるのでしょうか? 特定のディレクトリの下に配置しないといけないディレクトリの実体を、別のデバイスの自由な位置に置ける。 例えば「/home/<USERNAME>/hogehoge/に置かないと機能しない」という制限があるアプリを使いたいが、実体を別の場所、例えば「/dev/hdc/home/<USERNAME>/hogehoge/にしたい」とか。
お礼
そのような使い方があるのですね。 ご回答ありがとうございました。
- redslove10
- ベストアンサー率41% (397/968)
ハードリンクとして新しく作成したファイルを削除しても、ハードリンクされた元のファイルは消えません。 また、逆に元のファイルを削除しても新しく作成したファイルは残ります。 ハードリンクされる度にリンクカウントが増えていき、リンクカウントが0になったときに実体のファイルが削除されます。 一つの実行ファイルに多くの別名を付けることで、名前の違いに応じて違う処理を実行させるための手段としても用いられています。
お礼
リンクカウントという概念があることを初めて知りました。勉強になりました。ご回答ありがとうございました。
補足
ご回答ありがとうございます。 全てのハードリンクが消えるまで実体がのこるというのは驚きました。バックアップにも使えるのですね。 勉強になりました。