Linux 硬鏈結和軟鏈結的區別

2021-09-17 07:17:20 字數 1086 閱讀 9419

linux 與其他類 unix 系統一樣並不區分檔案與目錄:目錄是記錄了其他檔名的檔案。我們知道檔案都有檔名與資料,這在 linux 上被分成兩個部分:使用者資料 (user data) 與元資料 (metadata)。

在 linux 中,元資料中的 inode 號(inode 是檔案元資料的一部分但其並不包含檔名,inode 號即索引節點號)才是檔案的唯一標識而非檔名。檔名僅是為了方便人們的記憶和使用,系統或程式通過 inode 號尋找正確的檔案資料塊。

若乙個 inode 號對應多個檔名,則稱這些檔案為硬鏈結。換言之,硬鏈結就是同乙個檔案使用了多個別名(上圖hard link 就是 file 的乙個別名,他們有共同的 inode)

由於硬鏈結是有著相同 inode 號僅檔名不同的檔案,因此硬鏈結存在以下幾點特性:

[x] 檔案有相同的 inode 及 data block;

[x] 只能對已存在的檔案進行建立;

[x] 不能交叉檔案系統進行硬鏈結的建立;

[x] 不能對目錄進行建立,只可對檔案建立;

[x] 刪除乙個硬鏈結檔案並不影響其他有相同 inode 號的檔案。

軟鏈結與硬鏈結不同,若檔案使用者資料塊中存放的內容是另一檔案的路徑名的指向,則該檔案就是軟連線。軟鏈結就是乙個普通檔案,只是資料塊內容有點特殊。軟鏈結有著自己的 inode 號以及使用者資料塊。因此軟鏈結的建立與使用沒有類似硬鏈結的諸多限制:

[x] 軟鏈結有自己的檔案屬性及許可權等;

[x] 可對不存在的檔案或目錄建立軟鏈結;

[x] 軟鏈結可交叉檔案系統;

[x] 軟鏈結可對檔案或目錄建立;

[x] 建立軟鏈結時,鏈結計數 i_nlink 不會增加;

[x] 刪除軟鏈結並不影響被指向的檔案,但若被指向的原檔案被刪除,則相關軟連線被稱為死鏈結(即 dangling link,若被指向路徑檔案被重新建立,死鏈結可恢復為正常的軟鏈結)。

參考

linux 硬鏈結和軟鏈結區別

硬鏈結有點類似於複製的概念。ln 原始檔 目的檔案 ln不加 s,則預設是硬鏈結。例如,ln script script hard,ls命令顯示,script 顯示硬鏈結有兩個。我任意刪除其中乙個,ls命令顯示剩下的檔案硬鏈結為1 當建立script hard時,linux會為其分配乙個新的inod...

linux硬鏈結和軟鏈結的區別

1.原理上 硬鏈結 hard link a是b的硬鏈結 a和b都是檔名 則a的目錄項中的inode節點號與b的目錄項中的inode節點號相同,即乙個inode節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a和b對檔案系統來說是完全平等的。如果刪除了其中乙個,對另外乙個沒有影響。每增加乙個檔名,in...

linux硬鏈結和軟鏈結的區別

硬鏈結 hard link a是b的硬鏈結 a和b都是目錄項 dentry 則a的目錄項中的inode節點號與b的目錄項中的inode節點號相同,即乙個inode節點對應兩個不同的目錄項 dentry 兩個檔名指向同乙個檔案,a和b對檔案系統來說是完全平等的。如果刪除了其中乙個,對另外乙個沒有影響。...