ハードリンクの典型的な用途は何ですか?


9

Windowsに慣れた人なら誰でも、シンボリックリンクとは何か、どのように使用されるかを想像できます。一方、ハードリンクの概念はWindowsには無関係です(私は正しいのでしょうか?)。

Linuxのハードリンクの一般的な用途は何ですか。それらがどのように機能するかの違いを説明する別の投稿を見たことがある。私が求めているのは、ユーザーがシンボリックリンクの代わりにハードリンクを使用したほうがよい典型的な状況は何ですか?


3
この質問は、UnixとLinuxのスタック交換で行われました。なぜハードリンクが存在するのですか。
Flimm

回答:


9

2つ以上の場所で1つのファイルが必要なハードリンクを使用しています。ある場所を削除したいのですが、そのファイルへのリンクがあることを忘れてしまうかもしれません。これにより、存在しないファイルへのシンボリックリンクが作成されるのを防ぐことができます。

明確化:

ファイル名は、実際にはファイルへのハードリンクです。したがって、すべてのファイルには少なくとも1つのハードリンクがあり、通常は「the」ファイル名と見なされます。ファイルを削除すると、実際にはそのハードリンクが削除されます(つまりrm、「削除」ではなく「削除」という名前になります)。ファイルの最後のハードリンクが削除されると、システムはそのファイルも削除します。


7

ハードリンクは許可します...

  • 複数の名前を持つ単一の実行可能ファイル。

    例:

    ls -l /bin | grep -v ' 1 ' | sortのリストが表示さ/binれます。結果...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    3つのファイルbunzip2 bzcatとbzip2の代わりに同じファイルを使用し、ファイル内で何をすべきかを区別します。コードを節約し、コードを減らすことで、バグの可能性が減り、メンテナンスが容易になります。

  • 複数のパスでアクセスされる単一のファイル。

    インストールされている各パッケージの/ usr / share / doc / $ packagenameディレクトリを作成し、そのディレクトリ内に、パッケージのライセンス情報を含むLICENSEというファイルを作成するパッケージマネージャーを例にとります。典型的なLinuxシステムの多くのパッケージはGPLライセンスであるので、ファイルシステムにGPLの200のコピーを置く代わりに、1つのコピーと199のリンクしかありません。ptman @ Serverfault

ここでハードリンクが機能する(そしてソフトリンクが機能しない)理由:ハードリンクを1つだけ削除しても、ファイル自体は削除されません。


2
「例:移動(mv)はコピー(cp)+削除(rm)です。」これは、ソースと宛先が異なるマウント上にある場合にのみ当てはまります。それ以外の場合、a mvはファイルではなく名前のみを移動します。
Paddy Landau

1
技術的に進みたい場合:mvは名前ではなくiノードを変更します。しかし、あなたは正しいです。その例は最近少し古いようです。例としてgzipを使用するべきでした;)
Rinzwind

3
私たちは少し話題から外れていますが、私はこれをテストしました。ファイルが同じマウント上にあるmv限り、名前のみを変更します。iノードは同じままです。
Paddy Landau

これは、シンボリックリンクを使用できない理由を実際には説明していません。シンボリックリンクを使用すると、数バイトの余分なデータを節約できます。これはこの回答で正しく対処されています
Ken Sharp
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.