Linuxのハードリンクとソフトリンク


inode
Unixシステムでは、ファイルの格納は2つの部分に分けられ、1つはデータブロック(datablock)であり、ファイルに格納されたデータを保存するために使用される.もう1つの部分はインデックスノード(inode)と呼ばれ、ファイルのサイズ、作成日、読み書き権限などの情報を格納するために使用され、この部分はファイルの「メタデータ」(metadata)と呼ばれます.
inode           :
  • ファイルデータblockの位置
  • ファイルのバイト数
  • ファイル所有者のUser ID
  • ファイルのGroup ID
  • ファイルの読み取り、書き込み、実行権限
  • ファイルのタイムスタンプは、ctimeがinodeが前回変更した時間、mtimeがファイル内容が前回変更した時間、atimeがファイルが前回開いた時間の3つです.
  • リンク数、すなわち、このinode
  • を指すファイル名の数
    linuxシステムでは、各inodeには独自のinode番号があり、ls-iコマンドでファイルのinode番号を表示できます.
    オペレーティングシステムはinode番号によってファイル名ではなく一意のファイルを識別します.ファイル名はユーザーが記憶しやすいinode番号の「あだ名」にすぎません.1つのファイルには複数のファイル名がありますが、1つのファイルのinode番号は一意です.inode番号とブロックデータは別々に格納されているため、1つのパーティションにはまだスペースがある場合がありますが、オペレーティングシステムはパーティションがいっぱいで書き込めないことを示しています.この場合、現在のパーティションのinode番号が切れている可能性があります.この場合、現在のパーティションにはスペースの小さいファイルが大量にある可能性があります.
    ハードリンクとソフトリンク
    ハードリンク
    上述したように、ファイル名はinode号にとって1つのあだ名にすぎず、1つのinode号に複数のあだ名または別名を有することができる.各別名は、inode番号に対応するファイルのハードリンクです.つまり、ハードリンクはファイルの別名に相当します.linkコマンドまたはlnコマンドを使用して、ハードリンクを作成できます.
    ln FileA FileB
    

    以上のコマンドは、ファイルAのハードリンクファイルBを作成します.ファイルBは、ファイルAの別名に相当し、同じファイルを指します.
  • ファイルには同じinodeとdata blockがあります.
  • ディレクトリは作成できません.ファイルのみを作成できます.
  • ファイルシステムを交差させてハードリンクの作成を行うことはできません.
  • ハードリンクファイルを削除しても、同じinode番号の他のファイルには影響しません.

  • ディレクトリにハードリンクを作成できないのはなぜですか?linuxではディレクトリもファイルであり、関連リストが含まれていることがわかります.実際には、ディレクトリの作成時に複数のハードリンクが自動的に作成されます.は、自身のハードリンクです.親ディレクトリのハードリンクです.したがって、1つのディレクトリのハードリンクは少なくとも2(自分の1つと親の1つを指す)です.つまり、親ディレクトリのハードリンクが1つあるごとに+1(サブディレクトリの"..")になります.したがって、ディレクトリにハードリンクを作成すると、オペレーティングシステムはサブディレクトリが作成されたと判断するので、そのハードリンクがターゲットディレクトリを指す"..「このディレクトリを指します.これにより、遍歴中に論理が混乱し、デッドサイクルになることもあります.
    ソフトリンク
    ソフトリンクはシンボルリンク(symbolic link)とも呼ばれ、ソフトリンクとハードリンクは異なり、ソフトリンクは普通のファイルであり、独自のinode番号とデータブロックを持っているが、ソフトリンクのデータブロックにはソースファイルのパスが格納されている.次のコマンドを使用してソフトリンクを作成します.
    ln -s FileA FileB 

    上のコマンドはFileAのソフトリンクFileBを作成します.ソフトリンクを作成すると、FileAのinode番号の接続数が増加しません.ソフトリンクはソースファイルのinode番号ではなくソースファイルのファイル名を指します.ソフトリンクの存在形式はwindowsのショートカットに似ています.
  • ソフトリンクには自分のファイル属性や権限などがあります.
  • は、存在しないファイルまたはディレクトリにソフトリンクを作成することができる.
  • ソフトリンククロスファイルシステム;
  • ソフトリンクはファイルまたはディレクトリに対して作成することができる.
  • ソフトリンクを作成すると、リンクカウントは増加しません.
  • 削除ソフトリンクは、指向されたファイルには影響しませんが、指向された元のファイルが削除されると、関連ソフト接続はデッドリンクと呼ばれ、指向されたパスファイルが再作成されると、デッドリンクは正常なソフトリンクに復元されます.
  • linuxのハードリンクとソフトリンクの違いハードリンクはinode番号の別名を指すだけで、自身はinode番号とデータブロックを持たないが、ソフトリンクには自身のinode番号とデータブロック
  • がある.
  • ハードリンクは存在するファイルに対してのみ作成でき、ソフトリンクは存在しないファイルに対して作成でき、後でソースファイルを作成できます.
  • ハードリンクはシステムを交差させることはできませんが、ソフトリンクはできます.
  • ハードリンクはディレクトリに作成できません.ソフトリンクはできます.
  • ハードリンクを作成すると、ファイルの接続数が増加し、ソフトリンクは増加しません.
  • ソフトリンクを削除してもファイルは削除されません.ハードリンクを削除すると、残りのハードリンク数が0より大きい場合はファイルは削除されません.あるファイルのすべてのハードリンクが削除されると、そのファイルは削除されます.

  • 参考文献
    王華東、Linuxのハードリンクとソフトリンクを理解する[EBOL].https://www.ibm.com/developer...
    チェン一峰、inode[EBOL]を理解する.http://www.ruanyifeng.com/blo...