回答:
ファイルをコピーすると、コンテンツが複製されます。したがって、1つのファイルのコンテンツを変更しても、他のファイルには影響しません。
ハードリンクを作成すると、同じコンテンツを指すファイルが作成されます。したがって、いずれかのファイルの内容を変更すると、その変更は両方に反映されます。
ハードリンクは、基本的に同じファイルの2番目のファイル名です。そのため、ファイルをハードリンクすると、ファイルシステム上に1回だけ存在するため、スペースを1回しか占有しません。したがって、ディスクスペースを節約したい場合はこれを使用します
UNIXファイルシステムでは、実際にはすべてのファイル名は、iノードと呼ばれるディスク上のデータの場所へのハードリンクです。既存のファイルへの新しいハードリンクを作成する場合、同じデータへの単なる別のポインタであるため、ディスク上に余分なスペースは必要ありません。いずれかのリンクでデータを編集する(またはiノードを直接編集する)場合、両方のファイルが変更されます。
システムは、各iノードが持つハードリンクの数をカウントします。リンクカウントが0の場合、ファイルにアクセスできなくなり、データは上書きしても安全であるとマークされます。そのため、2つのハードリンクを含むファイルがある場合、どちらかのリンクを削除しても、データは削除されません。両方を削除した場合のみ、データは失われます。
コマンド-i
へのスイッチを使用して、ファイルのiノード番号を表示できますls
。
一方、ソフトリンクは、ファイル名で別のファイルを指します。元のファイルを移動または削除すると、リンクが壊れます。
「なぜハードリンクを使用したいのですか?」という質問の部分を参照して:
ハードリンクされたファイル(または、ソフト(シンボリック)リンクされたファイルは、異なる目的のためにマスカレードすることができる単一の実行可能ファイルを持つ便利な方法を提供します。
つまり、実行に使用できるオプションを判断するために、コードが呼び出される名前を調べることができます。これにより、わずかに異なる目的に必要なすべての共有機能を備えた1つの大きなコードの開発とパッケージ化が可能になります。ユーザーの観点からは、実行する「名前」の「何」を指定すると、選択肢と表示がより管理しやすいオプションのサブセットに制限されます。
典型的な例はLVMです。一度HP-UXは、さまざまな実行可能ファイルのハードリンクされたファイルを(使用例vgdisplay
、vgcreate
、vgextend
、など今日は、Linuxのような、これらのコマンドは、実際にシンボリック(ソフト)リンクされているlvm
実行可能。