web-dev-qa-db-ja.com

ハードリンクやその逆に対するシンボリックリンクの利点は何ですか?

シンボリックリンクとハードリンクの違いは理解していますが、どちらを選択するのか理解できませんでした。

10
Javier

これは 詳細に説明されています ServerFaultにあります。

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

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

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

ロナルドは、ハードリンクが2つの場所で異なるアクセス許可を持つことができると書いています。これは正しくないです。両方の場所が同じiノードを共有します。アクセス許可は、ファイル名ではなくiノードにバインドされます。したがって、2つの場所のハードリンクは、まったく同じアクセス許可、アクセス時間、...

10
hurikhan77

シンボリックリンクはファイルシステムを横断できますが、ハードリンクは横断できません。元のファイルを削除しても、ハードリンクはファイルを存続させますが、シンボリックリンクは存続させません。

1
bobmcn

ハードリンクとは、基本的に、ファイルが2つの場所に存在することを意味します。異なるアクセス許可を持つことができ、その場で削除することはできますが、他の場所で削除することはできません。

ソフトリンクは、本物への単なるポインタです。

ハードリンクは、同じファイルを指す2つ(またはそれ以上)のディレクトリエントリです。ソフトリンクは、別のディレクトリエントリを指すディレクトリエントリです。

0
Ronald Pottol