1. 程式人生 > >硬連結和軟連結的區別和作用

硬連結和軟連結的區別和作用

首先說說目錄的本質和節點的概念:

在linux系統下一切皆檔案,目錄它也是一個檔案,只不過在它裡面儲存的是
一張表的檔案。

而節點就類似我們c語言中學過的陣列的下標,我們可以把每個檔案都看成是
陣列中的元素,而知道了節點號,就可以找到實質的檔案內容了。

有了以上的認識,我們進一步說說硬連結和軟連結吧。

硬連結和軟連結的區別

1.原理上:

硬連結(hard link):檔案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節點的連結數)

b:不能對不同的檔案系統建立硬連結,即兩個檔名要在相同的檔案系統下。

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

軟連結:

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

b:可以跨檔案系統

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

3.命令

硬連結:ln 原始檔名 連結名

軟連結:ln -s 原始檔名 連結名

硬連結和軟連結的作用

硬連結:

硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。只刪除一個連線並不影響節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。

還有如果把連結名建立為一個以.開頭的隱藏檔案,還能很好的隱藏自己的隱私(你們懂的..呵呵呵)。
軟連結:

軟連結又稱之為符號連線(Symbolic Link)。軟連結檔案類似於Windows的快捷方式。它實際上是一個特殊的檔案。在符號連線中,檔案實際上是一個文字檔案,其中包含的有另一檔案的位置資訊。