ハードリンクとコピーされたファイルの違いは何ですか?


22

私の理解では、ハードリンクには元のファイルのコピーが含まれており、一方のディレクトリにあるハードリンクされたファイルを削除できますが、それはもう一方のディレクトリに存在します。

その場合、なぜハードリンクを使用したいのですか?なぜ2つの別々のファイルを持たないのですか?

回答:


29

ファイルをコピーすると、コンテンツが複製されます。したがって、1つのファイルのコンテンツを変更しても、他のファイルには影響しません。

ハードリンクを作成すると、同じコンテンツを指すファイルが作成されます。したがって、いずれかのファイルの内容を変更すると、その変更は両方に反映されます。


3
非常に大きなファイルの場合、ハードリンクの作成は常に元のファイルのコピーよりも高速ですか?
ホルヘブカラ

14

ハードリンクは、基本的に同じファイルの2番目のファイル名です。そのため、ファイルをハードリンクすると、ファイルシステム上に1回だけ存在するため、スペースを1回しか占有しません。したがって、ディスクスペースを節約したい場合はこれを使用します


4
迅速な対応ありがとうございます。次に、なぜソフトリンクの代わりにハードリンクを使用したいのですか?
マイクB

5
ソフトリンクは、基本的に別のファイルへのポインターです。したがって、元のファイルを削除すると、ソフトリンクは引き続き存在しますが、破損します。ハードリンクは同じファイルの2つの名前であるため、個別に削除できます。
ピーター

19
ピーターの説明は良いが、彼は「リンク数」を省いている。ファイルのiノード(ディスクメタデータ上)にはリンクカウントがあります。ハードリンクはリンクカウントをインクリメントしますが、ソフトリンクはインクリメントしません。リンクカウントがゼロになった場合、カーネルはファイルの内容を削除できます。
ブルースエディガー

4
これに対するAlanの答えには重要な点があると思います。ファイルを変更すると、ハードリンクがすべて変更され、コピーによってコンテンツが異なります。
歯磨きに成功した

6

UNIXファイルシステムでは、実際にはすべてのファイル名は、iノードと呼ばれるディスク上のデータの場所へのハードリンクです。既存のファイルへの新しいハードリンクを作成する場合、同じデータへの単なる別のポインタであるため、ディスク上に余分なスペースは必要ありません。いずれかのリンクでデータを編集する(またはiノードを直接編集する)場合、両方のファイルが変更されます。

システムは、各iノードが持つハードリンクの数をカウントします。リンクカウントが0の場合、ファイルにアクセスできなくなり、データは上書きしても安全であるとマークされます。そのため、2つのハードリンクを含むファイルがある場合、どちらかのリンクを削除しても、データは削除されません。両方を削除した場合のみ、データは失われます。

コマンド-iへのスイッチを使用して、ファイルのiノード番号を表示できますls

一方、ソフトリンクは、ファイル名で別のファイルを指します。元のファイルを移動または削除すると、リンクが壊れます。


0

「なぜハードリンクを使用したいのですか?」という質問の部分を参照して:

ハードリンクされたファイル(または、ソフト(シンボリック)リンクされたファイルは、異なる目的のためにマスカレードすることができる単一の実行可能ファイルを持つ便利な方法を提供します。

つまり、実行に使用できるオプションを判断するために、コードが呼び出される名前を調べることができます。これにより、わずかに異なる目的に必要なすべての共有機能を備えた1つの大きなコードの開発とパッケージ化が可能になります。ユーザーの観点からは、実行する「名前」の「何」を指定すると、選択肢と表示がより管理しやすいオプションのサブセットに制限されます。

典型的な例はLVMです。一度HP-UXは、さまざまな実行可能ファイルのハードリンクされたファイルを(使用例vgdisplayvgcreatevgextend、など今日は、Linuxのような、これらのコマンドは、実際にシンボリック(ソフト)リンクされているlvm実行可能。


これは質問とは関係ありません。
rjmunro

1
@rjmunro違います。OPは「なぜハードリンクを使用したいのですか?」と尋ねました。
JRFerguson

最後の例がわかりません。以前は、多数の実行可能ファイルへのハードリンクがありましたが、現在は1つの実行可能ファイルへのソフトリンクがあります。これらのソフトリンクはどのように区別できますか?
エマニュエルベルク

@EmanuelBerg私のポイントは、ハードリンクとソフトリンクのどちらを使用するかに関係なく、実行に有効なオプションと引数を決定するのは実行可能ファイルを呼び出す名前です。
JRFerguson

1
@EmanuelBerg TMTOWTDI
JRFerguson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.