概念: 硬鏈接(hard link): A是B的硬鏈接(A和B都是文件名),則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個文 ...
概念:
硬鏈接(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仍然存在(因為兩個是不同的文件),但指向的是一個無效的鏈接。
主要區別、限制:
硬鏈接:
a.不能對目錄創建硬鏈接,原因有幾種,最重要的是:文件系統不能存在鏈接環(目錄創建時的".."除外,這個系統可以識別出來),存在環的後果會導致例如文件遍歷等操作的混亂(du,pwd等命令的運作原理就是基於文件硬鏈接,順便一提,ls -l結果的第二列也是文件的硬鏈接數,即inode節點的鏈接數)
b:不能對不同的文件系統創建硬鏈接,即兩個文件名要在相同的文件系統下。
c:不能對不存在的文件創建硬鏈接,由原理即可知原因。
軟鏈接:
a.可以對目錄創建軟鏈接,遍歷操作會忽略目錄的軟鏈接。
b:可以跨文件系統
c:可以對不存在的文件創建軟鏈接,因為放的只是一個字元串,至於這個字元串是不是對於一個實際的文件,就是另外一回事了
ln 語法格式
硬鏈接:ln 源文件 鏈接名
軟鏈接:ln -s 源文件 鏈接名
註意: 鏈接的源文件路徑要寫絕對路徑)
否則會報錯(no such file or diretory)
示例:
如果覺得不錯的話可以點贊關註哦! 謝謝