linux硬鏈結和軟鏈結的區別

2021-10-14 04:35:00 字數 2047 閱讀 1333

ln 原始檔 鏈結名

[root@localhost tmp]# ll -i

total 1

18319574 -rw-r--r-- 2 root root 1 nov 28 18:07 e.txt

[root@localhost tmp]# ln e.txt f

[root@localhost tmp]# ll -i

total 2

18319574 -rw-r--r-- 2 root root 1 nov 28 18:07 f

18319574 -rw-r--r-- 2 root root 1 nov 28 18:07 e.txt

ln -s 源目錄或者原始檔 鏈結名

[root@localhost tmp]# ll -i

total 2

18319579 drw-r--r-- 2 root root 1 nov 28 18:07 a

18319574 -rw-r--r-- 2 root root 1 nov 28 18:07 e.txt

[root@localhost tmp]# ln -s e.txt g

[root@localhost tmp]# ll -i

total 3

18319579 drw-r--r-- 2 root root 1 nov 28 18:07 a

18319574 -rw-r--r-- 2 root root 1 nov 28 18:07 e.txt

18319578 lrw-r--r-- 2 root root 1 nov 28 18:07 g  -> e.txt

[root@localhost tmp]# ln -s a b

[root@localhost tmp]# ll -i

total 4

18319579 drw-r--r-- 2 root root 1 nov 28 18:07 a

18319670 lrw-r--r-- 1 root root 1 nov 28 18:07 b  -> a

18319574 -rw-r--r-- 2 root root 1 nov 28 18:07 e.txt

18319578 lrw-r--r-- 2 root root 1 nov 28 18:07 g  -> e.txt

2.原理:

硬鏈結(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仍然存在(因為兩個是不同的檔案),但指向的是乙個無效的鏈結。

3.硬鏈結

a.不能對目錄建立硬鏈結,只能對檔案建立硬鏈結

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

b.不可以跨檔案系統,即不能對不同的檔案系統建立硬鏈結,兩個檔名要在相同的檔案系統下。

c.不能對不存在的檔案建立硬鏈結,由原理即可知原因。

4.軟鏈結

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

b.可以跨檔案系統

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

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