ハードリンクとソフトリンクの主な違いは、ハードリンクされた各ファイルには元のファイルと同じInode値が割り当てられ、同じ物理的な場所を参照するのに対し、ソフトリンクされた各ファイルには元のファイルを指し示す別のInode値が含まれるという点です。
UNIXでは、リンクはファイルへのポインタです。
したがって、リンクはファイルまたはディレクトリを指します。
リンクを作成することは、ファイルにアクセスするための一種のショートカットである。
リンクは、複数のファイル名で同じファイルを別の場所で参照することを可能にする。
一般に、リンクにはハードリンクとソフトリンクの2種類があります。
ハードリンクとは
ハードリンクされた各ファイルには、元のファイルと同じInode値が割り当てられます。
Inodeは、ファイルシステム上のファイル構造を指します。
したがって、それらは同じ物理的なファイルの場所を参照しています。
一般に、ハードリンクの方が柔軟性があります。
オリジナルファイルやリンク先ファイルがファイルシステム上の別の場所に移動しても、リンクは同じままです。
ただし、異なるファイルシステムに移動することはできません。
このリンクは、実際のファイルの内容を持っています。
ユーザーがリンクを削除しても、リンク数は最小化されません。
他のリンクに影響を与えるだけです。
元のファイルが削除されても、リンク先にはファイルの内容が表示されます。
さらに、再帰的なループを避けるために、ディレクトリにハードリンクを作成することはできません。
ソフトリンクとは
ソフトリンクされた各ファイルは、元のファイルを指す個別のInode値を含んでいます。
ソフトリンクは、異なるファイルシステム間でリンクすることが可能です。
ユーザーがオリジナルファイルを削除または移動した場合、ソフトリンクされたファイルは正しく動作しません。
リンクは常にオリジナルファイルを指す。
言い換えれば、ソフトリンクはオリジナルファイルのパスを持ちますが、内容は持ちません。
ユーザーがソフトリンクを削除しても、何も影響はありません。
しかし、元のファイルを削除すると、リンクは「ぶら下がり」リンクになります。
これは、存在しないファイルを指すことになります。
さらに、ソフトリンクはディレクトリにリンクすることができます。
さらに、ユーザーがファイルシステム間でファイルをリンクしたい場合、このソフトリンクだけを使用することができます。
ハードリンクとソフトリンクの違い
定義
ハードリンクとは、ファイルシステム上のファイルと名前を関連付けるディレクトリエントリのことです。
これに対して、ソフトリンクとは、パス名解決に影響を与える絶対パスまたは相対パスの形で他のファイルまたはディレクトリへの参照を含むすべてのファイルを指す用語です。
コンテンツ
ハードリンクには実際のファイルのコンテンツが含まれ、ソフトリンクにはコンテンツではなく、元のファイルのパスが含まれます。
コマンド
ハードリンクを作成するコマンドは $ ln [元のファイル名] [リンク名] で、ソートリンクを作成するコマンドは $ ln -s [元のファイル名] [リンク名] です。
除去の効果
ハードリンクを削除すると、元のファイルの内容が表示されます。
ソフトリンクの場合、元のファイルを削除すると、存在しないファイルを指すダングリングリンクになります。
リンク
ハードリンクを使用すると、異なるファイルシステム間でファイルをリンクすることはできません。
一方、ソフトリンクを使用すると、ファイルシステム間でファイルをリンクすることができます。
結論
ハードリンクとソフトリンクの主な違いは、ハードリンクされたファイルには元のファイルと同じInode値が割り当てられ、同じ物理的な場所を参照するのに対し、ソフトリンクされたファイルには元のファイルを指す別のInode値が含まれるという点です。