Linux中的硬連結和軟連結
在linux系統中,任何東西都是一個檔案,檔案基本上是指向inode(一種資料結構,除了檔名和實際內容之外,還儲存有關檔案的所有內容)的連結。
硬連結的作用類似於原始檔案的映象副本。這些連結共享相同的 inode。對原始檔案或硬連結檔案所做的更改將反映在不同的檔案中。刪除硬連結時,其他檔案不會發生任何變化。硬連結不能跨檔案系統。
其中軟連結是指向原始檔案的實際連結,也稱為符號連結或符號連結。這些連結將具有不同的Inodes值。軟連結指向原始檔案,因此如果原始檔案被刪除,則軟連結將失敗。如果刪除軟連結,檔案將不會發生任何變化。這樣做的原因是,實際檔案或目錄的inode與"軟連結"建立的檔案的inode不同。軟連結可以跨檔案系統。
如何建立硬連結
通過執行以下命令ln 目標檔案 原始檔。以下命令建立一個為hello2.txt檔案的硬連結為hello6.txt.
通過以下命令來檢視兩個檔案的inode值。
從上圖可以看出hello2.txt和hello6.txt有相同的inode值,inode值是53324743,兩個檔案有相同的許可權和相同的大小。
接下來刪除hello2.txt,看看檔案是否刪除。看一下連結出來的檔案有沒有被刪除。
通過上圖可以看出來,刪除硬連結的原始檔。連結的檔案還在。
如何建立軟連結
使用ln -s 來建立軟連結,下面來建立hello3.txt的軟連結為hello7.txt。
下面檢視以下兩個軟連結檔案的inode值。
接下來刪除原始檔,看一下,連結出來的檔案會發生啥變化?
從上圖中可以看出,刪除軟連結的原始檔後,連結後的檔案指向了空的,檢視顯示找不到檔案。下面來測試一下,刪除軟連結後的檔案,原始檔會發生改變不?
總結:硬連結具有相同的inode,刪除硬連結的不同檔案,其它檔案不受影響。 軟連結,具有不同的inode,刪除軟連結的原始檔,則連結目標檔案不存在。刪除軟連結目標檔案,原始檔不受任何影響。