ソフト(シンボリック)リンクとハードリンクの違いは何ですか?


59

Vistaでもソフトリンクを作成できるようになりました。それでは、UNIX / Linux / Vistaのソフト(シンボリック)リンクとハードリンクの違いは何ですか?

どちらか一方を使用する利点はありますか?それとも、2つの異なる目的を果たしているだけですか?


実際には、答えはほとんど常にシンボリックリンクを使用することです。私の理解では、ハードリンクは主にスペースを保存するためのものです。特に、スナップショットや増分バックアップなど、連続するスナップショットには将来的に変更される可能性のない同一のファイルが多数あります。
ライアントンプソン

これをUnixとLinuxに移行する必要がありますか?unix.stackexchange.com/questions/9575/…を
ripper234

2
いいえ、移行しないでください。元の質問はUnixだけに固有のものではないため、Windowsはハードリンクとソフトリンクをサポートしています。
リチャードウェスト

1
一部のアプリケーションが壊れる(そして時にはひどく)あなたはソフトリンクを使用している場合します- expeciallyディレクトリについて:ソフトリンクが間接参照されます、そしてそれは、アプリケーションが比較したときに、言う/var/opt/log/appname間接参照値と(その設定)、と言う/apps/appname/logs、それは文句を言うでしょうこれは一致しません。これに対する修正は、mount --bind(Linuxで)を使用して元のディレクトリを新しい場所に再マウントすることです。
ウォーレン

1
他の回答に含まれるいくつかのポイントをクリアするために... Windowsはハードリンクを作成できます(ただし、Unixとは少し異なる動作をすると思います)。mklinkコマンドとh引数を見てください。(コマンドラインにmklinkと入力すると、基本的な構文を含むヘルプファイルが表示されます。)

回答:


68

ハードリンクは伝統的に同じファイルシステム構造(unixspeakのiノード)を共有しますが、ソフトリンクはパス名のリダイレクトです。

  • ハードリンクは同じファイルシステム上にある必要があり、ソフトリンクはファイルシステムを横断できます。
  • ハードリンクされたファイルは、どちらかを移動してもリンクされたままになります(コピーと削除のメカニズムをトリガーする別のファイルシステムに移動しない限り)。ソフトリンクされたファイルは、ターゲット(オリジナル)を移動すると壊れます(リンクを移動すると、絶対パスまたは相対パスを使用しましたか?それでも有効ですか?)。
  • ハードリンクされたファイルは同じものですが、オリジナルはソフトリンク専用であり、オリジナルを削除するとデータが削除されます。すべてのハードリンクが削除されるまでデータは消えません。
  • ソフトリンクは任意のターゲットを指すことができますが、ほとんどのOS /ファイルシステムはディレクトリのハードリンクを禁止して、ファイルシステムグラフのサイクルを防ぎます(ハードリンクであるUNIXディレクトリのエントリ.と例外を除く..)。
  • ソフトリンクには、ファイルシステムウォーキングツールからの特別なサポートが必要になる場合があります。readlink(2)を読んでください。

(いくつかの詳細はmat1tによって思い出さました。ありがとう。)


いい要約。すべてのLinuxユーザーはこれを知っている必要があります(ただし、ハードリンクは非常にまれです)。
アルテムルサコフスキー2009年

dmckeeの答えには、セマンティクスに関する詳細がかなり正確に含まれています。私が追加する唯一の詳細は、より高いレベルで起こることの説明です。ソフトリンクはそれ自体がファイルであり、ハードリンクは既存のデータを指すディレクトリエントリです。ウィキペディアには、ハードリンクとソフトリンクの詳細があります。
シャイニー氏と

いい合計、非常に便利です
ラジケ

9
また、ハードリンクはアクセス権と所有権情報を共有することに注意する必要があります。
コーリーS.

6
という名前の2つのハードリンクが自動的に作成されることを追加してください。および..フォルダーを作成するたびに。Linuxでは、これらはフォルダーへの唯一の有効なハードリンクです。
ミルチャVutcovici

10

要約すると、シンボリック/ショートリンクは最初のファイルの場所へのショートカットとして機能しますが、ハードリンクはディスク上のファイルへのショートカットです。

ソフトリンクのターゲットを削除すると、ソフトリンクは機能しなくなりますが、ハードリンクのコピーを1つ削除すると、ファイルはすべてのハードリンクが削除されるまでディスクに残ります。実際には、すべてのファイル名はディスク上のファイルへのハードリンクです。

また、特定の制限もあります。たとえば、フォルダーのハードリンクを作成できるとは思わないが、フォルダーのソフトリンクを作成することはできます。ソフトリンクは、異なるドライブとパーティション上のファイル/フォルダーを指すこともできますが、ハードリンクはできません。


-1

MS Windowsシステムは、常にソフトリンク(ショートカット)を使用します。つまり、リンクは単にファイルの場所を指すショートカットとして機能します。元の場所を移動すると、リンクが切れます。さらに、ショートカットに対する操作(アクセス許可の変更、ショートカットの名前の変更など)は、実際のファイルには影響しません。

そのため、質問は誤った仮定から始まりました。はい、Vistaはソフトリンクを使用しますが、それは新しいものではありません。つまり、MSショートカットはそうです。


3
いいえ、NTFSはハードリンクをサポートしており、NTFS 3.1以降(XP / 2003以降の現在のバージョン)です。
クリスS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.