本文試圖清晰徹底的解釋軟連結和硬連結檔案的差別
一 連結檔案
連結有兩種方式,軟連結和硬連結。
1 軟連結檔案
軟連結又叫符号連結,這個檔案包含了另一個檔案的路徑名。可以是任意檔案或目錄,可以連結不同檔案系統的檔案。
**********連結檔案甚至可以連結不存在的檔案,這就産生一般稱之為"斷鍊"的問題(或曰“現象"),連結檔案甚至可以循環連結自己。類似于程式設計語言中的遞歸。
用ln -s 指令可以生成一個軟連接配接,如下:
[[email protected] test]# ln -s source_file softlink_file
在對符号檔案進行讀或寫操作的時候,系統會自動把該操作轉換為對源檔案的操作,但删除連結檔案時,系統僅僅删除連結檔案,而不删除源檔案本身。
2 硬連結檔案
info ln 指令告訴您,硬連結是已存在檔案的另一個名字(A "hard link" is another name for an existing file),這多少有些令人困惑。硬連接配接的指令是
ln -d existfile newfile
硬連結檔案有兩個限制
1)、不允許給目錄建立硬連結;
2)、隻有在同一檔案系統中的檔案之間才能建立硬連結。
***********對硬連結檔案進行讀寫和删除操作時候,結果和軟連結相同。但如果我們删除硬連結檔案的源檔案,硬連結檔案仍然存在,而且保留了願有的内容。
***********這時,系統就“忘記”了它曾經是硬連結檔案。而把他當成一個普通檔案。
二 兩者之間的差別
硬連接配接指通過索引節點來進行的連接配接。在Linux的檔案系統中,儲存在磁盤分區中的檔案不管是什麼類型都給它配置設定一個編号,稱為索引節點号(Inode Number)。
在Linux中,多個檔案名指向同一索引節點是存在的。一般這種連接配接就是硬連接配接。*******硬連接配接的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連接配接到重要
檔案,以防止“誤删”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連接配接。隻删除一個連接配接并不影響索引節點本身和其它的連接配接,隻有當最後一個
連接配接被删除後,檔案的資料塊及目錄的連接配接才會被釋放。也就是說,檔案才會被真正删除。
軟連結檔案有點類似于Windows的快捷方式。它實際上是特殊檔案的一種。在符号連接配接中,檔案實際上是一個文本檔案,其中包含的有另一檔案的位置資訊。
三 個人體會
軟連結是另一個檔案,作用可以了解為一個指針,******作用在這個檔案上的操作除了删除都直接轉向實際指向檔案,由于是一個真實的檔案是以占用磁盤空間
硬連結可以認為不是一個檔案,它隻是實際檔案的一個别名,它的作用是防止真實檔案被誤操作,給一個檔案建立硬連結後,他們互為别名,删除其中任意一個,
這樣用RM指令隻會删除該别名,實際檔案并不會被删除。隻有連結數為0時,才會删除原始檔案。