ハードリンクとソフトリンクの違いと役割

2062 ワード

まず、ディレクトリの本質とノードの概念について説明します.
 linux        ,         ,           
      。

        c           ,             
      ,       ,             。

以上のような認識があれば、ハードリンクとソフトリンクについてさらにお話ししましょう.
ハードリンクとソフトリンクの違い
1.原理上:
ハードリンク(hard link):ファイルAがファイルBのハードリンクである場合、Aのディレクトリ項目のinodeノード番号はBのディレクトリ項目のinodeノード番号と同じである.すなわち、1つのinodeノードは2つの異なるファイル名に対応し、2つのファイル名は同じファイルを指し、AとBはファイルシステムに対して完全に平等である.いずれかを削除した場合、他の1つには影響しません.ファイル名を1つ追加するたびに、inodeノード上のリンク数が1つ増加し、対応するファイル名を削除するたびに、inodeノード上のリンク数が0になるまで減少し、inodeノードと対応するデータブロックが回収される.注:ファイルとファイル名は異なるもので、rmAが削除したのはAというファイル名だけで、Aに対応するデータブロック(ファイル)はinodeノードのリンク数が0に減少したときにのみシステムに回収されます.
ソフトリンク(soft link):AはBのソフトリンク(AとBはファイル名)であり、Aのディレクトリ項目のinodeノード番号はBのディレクトリ項目のinodeノード番号とは異なり、AとBは2つの異なるinodeを指し、次いで2つの異なるデータブロックを指す.ただし、Aのデータブロックに格納されているのは、Bのパス名のみである(これに基づいてBのディレクトリ項目を見つけることができる).AとBの間には「主従」関係があり、Bが削除された場合もAは存在する(2つは異なるファイルであるため)が、無効なリンクを指している.
2.使用制限:

a:ディレクトリにハードリンクを作成できません.理由はいくつかあります.最も重要なのは、ファイルシステムにリンクリングが存在しないことです(ディレクトリ作成時の「」を除き、このシステムは認識できます).ループの結果、例えばファイル遍歴などの操作が混乱する(du,pwdなどのコマンドの動作原理はファイルハードリンクに基づいている.ちなみにls-l結果の2列目もファイルのハードリンク数、すなわちinodeノードのリンク数である)
b:異なるファイルシステムに対してハードリンクを作成することはできません.すなわち、2つのファイル名は同じファイルシステムの下にある必要があります.
c:存在しないファイルにハードリンクを作成することはできません.原理で原因がわかります.

a.ディレクトリにソフトリンクを作成できます.遍歴操作ではディレクトリのソフトリンクは無視されます.
b:ファイルシステムにまたがる
c:存在しないファイルにソフトリンクを作成できます.文字列が1つしか入っていないので、この文字列が実際のファイルであるかどうかは別です.
3.コマンド
   :ln         

   :ln -s         

ハードリンクとソフトリンクの役割

ハード接続の役割は、1つのファイルに複数の有効なパス名を持つことを許可することです.これにより、ユーザーはハード接続を重要なファイルに確立し、「誤削除」の機能を防止することができます.1つの接続のみを削除しても、ノード自体と他の接続には影響しません.最後の接続が削除された場合にのみ、ファイルのデータ・ブロックとディレクトリの接続が解放されます.つまり、ファイルが本当に削除される条件は、それに関連するすべてのハード接続ファイルが削除されることです.
              .       ,            (    ..   )。

ソフトリンクはシンボルリンクとも呼ばれる.ソフトリンクファイルはWindowsのショートカットに似ています.実際には特殊なファイルです.シンボル接続では、ファイルは実際には別のファイルの場所情報を含むテキストファイルです.