Files

硬連結和文件有什麼區別?

  • February 22, 2017

硬連結定義為指向 inode 的指針。軟連結也稱為符號連結,定義為一個獨立的文件,指向另一個連結,不受硬連結的限制。

文件和硬連結有什麼區別?硬連結指向一個inode,那麼什麼是文件?inode 條目本身?還是帶有硬連結的inode?

假設我創建了一個帶有觸摸的文件。然後在 inode表中創建一個 inode 條目。我創建了一個硬連結,它與文件具有相同的 inode 編號。那麼我是否創建了一個新文件?或者文件只是定義為一個inode?

非常簡短的回答是:

  • 文件是匿名的數據塊
  • 硬連結是文件的名稱
  • 符號連結是一個特殊文件,其內容是路徑名

Unix 文件和目錄的工作方式與現實世界中的文件和目錄完全相同(而不像現實世界中的文件夾);Unix 文件系統(概念上)的結構如下:

  • 文件是匿名的數據塊;它沒有名字,只有一個數字(inode)
  • 目錄是一種特殊的文件,它包含名稱到文件的映射(更具體地說是 inode);因為目錄只是一個文件,目錄可以有目錄的條目,這就是遞歸的實現方式(注意,當引入 Unix 文件系統時,這一點都不明顯,很多作業系統不允許目錄包含目錄然後)
  • 這些目錄條目稱為硬連結
  • 符號連結是另一種特殊類型的文件,其內容是路徑名;此路徑名被解釋為另一個文件的名稱
  • 其他類型的特殊文件有:套接字、fifos、塊設備、字元設備

牢記這個比喻,特別是記住 Unix 目錄像現實世界的目錄而不是像現實世界的文件夾一樣工作,這解釋了新手經常遇到的許多“奇怪”,例如:為什麼我可以刪除我不刪除的文件’沒有寫權限?好吧,首先,您不是在刪除文件,而是在刪除文件的許多可能名稱之一,為此,您只需要對目錄而不是文件的寫訪問權。就像在現實世界中一樣。

或者,為什麼我會有懸空的符號連結?好吧,符號連結只包含一個路徑名。沒有什麼說實際上必須有一個具有該名稱的文件。

我的問題只是文件和硬連結有什麼區別?

文件和硬連結的區別就如同你和電話簿中你的名字所在的行之間的區別一樣。

硬連結指向一個inode,那麼什麼是文件?Inode 條目本身?還是帶有硬連結的 Inode ?

文件是一段匿名的數據。就是這樣。一個文件不是一個 inode,一個文件一個 inode,就像你不是一個社會安全號碼,你一個 SSN。

硬連結是文件的名稱。一個文件可以有多個名稱。

假設我創建了一個帶有 touch 的文件,然後在Inode Table中創建了一個 Inode 條目。

是的。

我創建了一個硬連結,它與文件具有相同的 Inode 編號。

不。硬連結沒有 inode 編號,因為它不是文件。只有文件有 inode 號。

硬連結將名稱與 inode 編號相關聯。

那麼我是否創建了一個新文件?

是的。

或者文件只是定義為一個 Inode ?

不,該文件有一個 inode,它不是一個 inode。

引用自:https://unix.stackexchange.com/questions/346425