1. 程式人生 > 實用技巧 >硬連結和軟連結(1)

硬連結和軟連結(1)

連結檔案分兩種:

1.硬連結:ls -l 第二段現實出的數字,指明檔案被連結的次數

如果硬連結的次數為1,刪除此檔案就將清除檔案的inode,這就意味著此檔案被刪除

舉例如下:

首先我從/etc目錄下拷貝兩個檔案到/tmp目錄下:wKioL1M62b_CoC6PAACphMrwpQ0286.jpg

然後給fstab做一個硬連結:(硬連結格式:ln 原檔案路徑 新檔案路徑)

wKioL1M62oOQrJLdAAJL2xFpMwA872.jpg

使用ls -i可以檢視檔案inode號碼:

wKioL1M62x-hYgNGAAELCc7ky0c553.jpg

這樣我們就可以得知hi和fstab的inode號碼一致,因此它們是同一個檔案。

例如:我對fstab檔案進行編輯:

wKioL1M63mDi1eowAAIJIhNw-MI373.jpg

在最後一行我輸入了一串字元,然後我開啟hi這個檔案:

wKiom1M63z-i4qRDAAKbVbTzQxA364.jpg

所以說它們的的確確是同一個檔案。

由於inode只能管理同一個分割槽上的磁碟塊,所以,硬連結不能夠跨分割槽建立。

而我們試著來刪除它們當中的一個,看看會有什麼效果:

wKiom1M64TTjiOeeAAIQgZrr1vA752.jpg

在開啟看看fstab:

wKioL1M64UCB1NxuAAK5cWX_hxU179.jpg

由此,我們可以得出結論:刪除原檔案路徑,並不會影響連結檔案的使用。但此時硬連結次數為1,再進行刪除操作,這個檔案就沒了。

還有一個問題,目錄是不能建立硬連線的,但是目錄的連結次數為啥為2呢?

wKiom1M65fXwfAnfAAMx1bOsvtc951.jpg


我使用ls -ai檢視/目錄,以及/tmp 目錄得出結論,/目錄下的/tmp和/tmp目錄下的“.”inode號碼一致。而我們知道,訪問任何一個目錄或檔案,我們都可以使用絕對路徑和相對路徑,所以,這樣就可以解釋通了,新目錄的連結數為什麼是2,而上層目錄數則會增加1,我來測試看看:

wKiom1M7jfKQeJoyAAHg9vtys4A741.jpg

我們可以發現,原本/tmp 目錄的連結數由8增加為9,而新目錄/tmp/li則為2,是不是這樣呢,我們看一下:

wKiom1M7j12D0KZbAAC_Vfj4IXA841.jpg

所以說,目錄的連結數和檔案的連結數不是一回事!




轉載於:https://blog.51cto.com/yingdeyumao/1388701