1. 程式人生 > >Linux 連結之軟硬連結接----通俗易懂

Linux 連結之軟硬連結接----通俗易懂

Linux 連結分兩種,一種被稱為硬連結(Hard Link)


,另一種被稱為軟連結(Symbolic Link)(我們有時候也稱之為符號連結)。預設情況下,ln 命令產生硬連結。

 

軟連結----Windows得快捷方式和原始檔的關係

在 Linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號(Inode Index)。

軟連結的理解就是Windows的快捷方式和原始檔一樣(看下圖)。比如我在C盤目錄下面有一個檔案MyLink(A),我建立了一個快捷方式(B)到桌面,此時我的這個快捷方式和這個原始檔的關係就是軟連結。A 的目錄項中的 inode 節點號與 B 的目錄項中的 inode 節點號不相同,A 和 B 指向的是兩個不同的 inode,繼而指向兩塊不同的資料塊。但是 B的資料塊中存放的只是 A 的路徑名(可以根據這個找到 B 的目錄項,A的資料塊中才是真正的存放資料

。A 和 B 之間是“主從”關係,如果 A被刪除了,B 仍然存在(因為兩個是不同的檔案),但指向的是一個無效的連結


硬連結----同一樹根下的家族檔案

與軟連結對應的連結方式就是硬連結。

在 Linux 中,多個檔名指向同一索引節點是存在的。比如:A 是 B 的硬連結(A 和 B 都是檔名),則 A 的目錄項中的 inode 節點號與 B 的目錄項中的 inode 節點號相同,即一個 inode 節點對應兩個不同的檔名,兩個檔名指向同一個檔案,A 和 B 對檔案系統來說是完全平等的。刪除其中任何一個都不會影響另外一個的訪問。

硬連線的作用是允許一個檔案擁有多個有效路徑名(看下圖)

,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線。只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。