ハードリンクは同じファイルシステム内のファイルとディレクトリをリンクしますが、ソフトリンクはファイルシステムの境界を越えてもかまいません。
リンクを理解する前に、まずiノードを理解する必要があります。iノードとは、ファイルの作成日、ファイルの承認、ファイルの所有者など、ファイルに関するメタデータで構成されるデータ構造です。
比較表
比較基準 | ハードリンク | ソフトリンク |
---|---|---|
基本 | ファイルには、ハードリンクと呼ばれるさまざまな名前でアクセスできます。 | ファイルにアクセスすることができますそのファイルを指すさまざまな参照を通じてソフトリンクとして知られています。 |
元のファイルが削除されたときのリンク検証 | まだ有効でファイルにアクセスできます。 | 無効 |
作成に使用したコマンド | ln | ln -s |
iノード番号 | 同じ | 違う |
リンクできる | 独自のパーティションに。 | ネットワークに接続されている他のファイルシステムにも。 |
メモリ消費 | もっと少なく | もっと |
相対パス | 適用できません | 許可 |
ハードリンクの定義
ハードリンクは、同じファイルシステム内の2つのファイルを直接リンクし、識別のためにファイルのiノード番号を使用します。 ハードリンクはディレクトリに実装できません(それらはinodeを指しているため)。 「 ln 」コマンドを使用してハードリンクを生成すると、元のファイルを参照するために使用できる別のファイルがコマンドラインに作成されます。 元のファイルと生成されたファイルはどちらも同じiノードとコンテンツを持ちます。 したがって、それらは同じ権限と同じ所有者を持ちます。
元のファイルを削除してもハードリンクファイルには影響しません。ハードリンクファイルは残ります。 iノードは、それ自体へのハードリンクの数を計算するためのカウンタを保持しています。 カウンタが0の値を示すと、iノードは空になります。 あなたがハードリンクに何らかの変更を加えるときはいつでも、それはオリジナルのファイルで模倣するでしょう。
ソフトリンクの定義
ソフトリンクは通常、元のファイルの代替パス(またはエイリアス)です。 これらはシンボリックリンクとも呼ばれます 。 リンクの「ターゲットファイル」の名前、それがソフトリンクであることを指定するフラグが含まれています。 ファイルがアクセスされると、ソフトリンクはソフトリンクのサブジェクトに書かれたパスを通してそれをターゲットファイルにリダイレクトします。
ソフトリンクがショートカットとして動作するWindows OSの場合、これらは非常に便利です。 ソフトリンクの作成と削除は元のファイルには影響しません。 ターゲットファイルが削除された場合、ソフトリンクはぶら下がってしまい、ターゲットファイルがアクセスされたときにどこも指しておらず、エラーメッセージが表示されます。 ハードリンクとは異なり、ソフトリンクはiノード番号を使用しません。 絶対パスまたは相対パスは、シンボリックリンクの一部になる可能性があります。
ハードリンクとソフトリンクの主な違い
- ハードリンクは、ターゲットファイルにアクセスするためにinodeを参照する元のファイルの追加の名前です。 対照的に、ソフトリンクはオリジナルファイルとは異なり、オリジナルファイルのエイリアスですが、inodeを使用しません。
- 元のファイルが削除されるとソフトリンクは無効になりますが、ターゲットファイルが削除されてもハードリンクは有効です。
- Linuxでは、ハードリンクの作成に使用されるコマンドは「 ln 」です。 それとは対照的に 、ソフトリンクに使用されるコマンドは「 ln -s 」です。
- ハードリンクは、ターゲットファイルとそのソフトリンクが異なるiノード番号を持つソフトリンクとは異なる、同じiノード番号を持ちます。
- ハードリンクはそれ自身のパーティションに制限されていますが、ソフトリンクは異なるファイルシステムをカバーできます。
- ハードリンクのパフォーマンスは、場合によってはソフトリンクよりも優れています。
- ソフトリンクでは、相対パスと絶対パスの両方が許可されています。 反対に、相対パスはハードリンクでは許可されません。
結論
ハードリンクは余分なスペースを必要とせず、より早く解決できますが、ハードリンクに適用された変更は元のファイルに反映されます。 一方、ソフトリンクには追加のスペースが必要ですが、ソフトリンクを変更しても元のファイルには影響しません。 ハードリンクとは異なり、ソフトリンクはディレクトリに許可されます。