歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 如何區分Linux的硬連接和軟連接

如何區分Linux的硬連接和軟連接

日期:2017/3/3 16:10:17   编辑:關於Linux

一、Linux下的兩種連接文件及創建方式

在Linux下面的連接文件有兩種——軟連接和硬連接,雖然都是連接文件,但兩者卻有很大的區別。一種是類似於Windows的快捷方式功能的文件(或目錄),這種連接稱為軟連接;另一種則是通過文件系統的inode連接來產生新文件名,而不是產生新文件,這種稱為硬連接。

創建連接文件的方法非常簡單,就是使用ln命令,ln file1 file2,則創建硬連接,file2為file1的硬連接,ln -s file1 file2,則創建軟連接,file2為file1的軟連接。

二、詳述硬連接

為了讓大家更好地了解這兩種連接的差別,這裡先說說硬連接吧,因為它比軟連接要難理解一些。

我們知道,在Linux下,每個文件都會占用一個inode,文件內容由inode的記錄來指向,而想要讀取文件,必須要經過目錄記錄的文件名來指向正確的inode號碼才能讀取,也就是說,其實文件名只與目錄有關,但是文件的內容則與inode有關。

那什麼硬連接呢?就是在某個目錄下新建一條文件名連接到某inode號碼的關聯記錄而已,簡單來說,就是有多個文件名對應到同一個inode號碼,注意,是多個文件名,不是多個文件。

看到這裡可能你也是一頭霧水,那麼請看下面的例子吧

上圖表示,由inode1讀取到連接文件的內容僅有文件名,根據文件名連接到正確的目錄去取得目標文件的inode,最終就能夠讀取到正確的數據了。

從上面的輸出結果中,大家應該已經看到軟連接是要耗用inode和block的(因為inode號與源文件的inode不相同),對應上圖就是耗用了inode1和它所指向的block,它與硬連接的不同之處在於,inode1在創建這個軟件文件之前是沒有被使用的inode,它不指任何的block,也是說圖中它所指向的block也不沒有被利用的。當要創建軟連接時,inode1和它所指向的block才被利用了。而且這個block不是用來記錄文件名的,而是真真正正的一個文件,用來記錄文件信息,例如這裡它的信息是“/etc/crontab”這12個字,它是放在目錄/root下的文件。

四、軟連接與硬連接優缺點分析

1、硬連接

硬連接比較安全,因為即使某一個目錄下的關聯數據被刪除了也沒有關系,只要有任何一個目錄下存在著關聯數據,那麼該文件就不會被刪除,而且硬連接還不需要耗用inode和block,但是硬連接也有其限制,就是不能跨文件系統也不能連接到目錄。

注:在硬連接中,刪除文件時,只有當連接數為0時,才能文件真正刪除,否則只會把文件的連接數減1。

2、軟連接

軟件連接比較靈活,可以連接到文件和目錄,但是它會耗用inode和block,不過這對於系統來說其實不算什麼,但是如果目標文件被刪除了,從最後一幅圖可以看出,整個環節就會無法繼續下去,會發生無法通過連接文件讀取的問題。其實軟連接就你Windows中的快捷方式一樣。

總之:本人覺得硬連接與軟連接的一大區別就是硬連接不會創建一個新的文件,而軟連接則會創建一個新的文件來,這個文件用來記錄它所連接的文件的文件名。

作者署名:csdn博客 倦飛L

 

Copyright © Linux教程網 All Rights Reserved