linux硬鏈結和軟鏈結的區別

2021-09-12 14:51:01 字數 799 閱讀 8940

1.原理上:

硬鏈結(hard link):a是b的硬鏈結(a和b都是檔名),則a的目錄項中的inode節點號與b的目錄項中的inode節點號相同,即乙個inode節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a和b對檔案系統來說是完全平等的。如果刪除了其中乙個,對另外乙個沒有影響。每增加乙個檔名,inode節點上的鏈結數增加一,每刪除乙個對應的檔名,inode節點上的鏈結數減一,直到為0,inode節點和對應的資料塊被**。注:檔案和檔名是不同的東西,rm a刪除的只是a這個檔名,而a對應的資料塊(檔案)只有在inode節點鏈結數減少為0的時候才會被系統**。

軟鏈結(soft link):a是b的軟鏈結(a和b都是檔名),a的目錄項中的inode節點號與b的目錄項中的inode節點號不相同,a和b指向的是兩個不同的inode,繼而指向兩塊不同的資料塊。但是a的資料塊中存放的只是b的路徑名(可以根據這個找到b的目錄項)。a和b之間是「主從」關係,如果b被刪除了,a仍然存在(因為兩個是不同的檔案),但指向的是乙個無效的鏈結。

2.使用限制上:

a.不能對目錄建立硬鏈結,原因有幾種,最重要的是:檔案系統不能存在鏈結環(目錄建立時的".."除外,這個系統可以識別出來),存在環的後果會導致例如檔案遍歷等操作的混亂(du,pwd等命令的運作原理就是基於檔案硬鏈結,順便一提,ls -l結果的第二列也是檔案的硬鏈結數,即inode節點的鏈結數)

a.可以對目錄建立軟鏈結,遍歷操作會忽略目錄的軟鏈結。

b:可以跨檔案系統

c:可以對不存在的檔案建立軟鏈結,因為放的只是乙個字串,至於這個字串是不是對於乙個實際的檔案,就是另外一回事了

3.命令

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對檔案系統來說是完全平等的。如果刪除了其中乙個,對另外乙個沒有影響。...