天天看點

LINUX 硬連結與軟連結的差別

本文試圖清晰徹底的解釋軟連結和硬連結檔案的差別

 一 連結檔案

    連結有兩種方式,軟連結和硬連結。

  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時,才會删除原始檔案。

繼續閱讀