在Linux系統中,連接分爲兩種:一種被稱爲硬連接(Hard Link),另外一種被稱爲軟連接或符號連接(Symbolic Link)。在默認不帶參數的狀況下,執行ln命令建立的是硬連接
是指經過索引節點來進行連接。在linux的文件系統中,保存在磁盤分區中的文件不論是什麼類型都會給他分配一個編號,這個編號被稱爲索引節點號(Inode Index) 在Linux系統中,多個文件名指向同一個索引節點是正常且容許的。通常這種連接就稱爲硬連接。硬連接的做用之一是容許一個文件擁有多個有效路徑名,這樣用戶就能夠創建硬連接到重要的文件,以防止「誤刪」源數據(不少硬件,如netapp存儲中的快照功能就應用了這個原理,增長一個快照就多了一個硬連接)。爲何爲文件建立了一個硬連接就會防止數據誤刪呢? 由於文件系統的原理是,只要文件的索引節點還有一個以上的連接(僅僅刪除了該文件指向)。只刪除其中一個連接並不影響索引節點自己和其餘的連接(既數據文件實體並未被刪除),只有當最後一個連接唄刪除的後,此時若是有新的數據存儲到硬盤時。被刪除文件的數據塊及目錄的連接纔會被釋放,空間被新數據佔用覆蓋。此時,數據就再也沒法找回了。也就是說,在Linux系統中,刪除文件(其實目錄也是文件)的條件是與之相關的全部硬連接文件均被刪除。
軟連接有時也被稱爲符號連接(Symbolic Link)。軟連接文件就相似於Windows系統下的快捷方式。它其實是一個特殊的文件。在軟連接中,軟連接文件實際上就是一個文本文件,這個問價中包含有軟連接指向另外一個文件的位置信息內容,所以,經過訪問這個「快捷方式」就能夠迅速定位到軟連接所指向的源文件實體。 mkdir /test && cd /test&& touch testfile ln testfile testfile_hard_link ln -s testfile testfile_soft_link ls -li * 能夠查看到inode信息
總結:node
一、硬連接與原文件的inode節點號相同。而軟鏈接的inode節點號不相同。 二、目錄沒法建立硬連接,可是能夠建立軟鏈接 三、軟鏈接能夠跨分區,硬連接不能夠。 四、硬連接原文件刪除,文件依然能夠訪問。軟鏈接原文件刪除,連接文件失效
一、軟鏈接的生產使用案例:linux
在咱們編譯apache軟件時,編譯路徑帶着版本號/application/apache2.2.21(爲了區分版本用,所以路徑也比較長),而在訪問目錄時又但願簡介,此時就能夠經過創建一個簡單的軟連接路徑文件,來達到方便訪問的目的。
二、硬連接的生產使用案例:apache
硬件存儲的快照功能。或者爲備份文件建立多個硬連接文件,防止誤刪除。
三、文件系統的知識:app
文件的訪問方式:filename->index(inode) index->data derectory 123 345 567 789 indode table blocks 文件系統的磁盤佈局 bootBlock block group0 .... block group N Blocke group0: super block、 Group Descriptrs 、Data block Bitmap、Inode Table、Data blocks "進程還佔用文件,這時候斷電了!" Kernel沒有機會回收文件所佔用的磁盤空間了 磁盤空間可能仍被標記爲「已用」 文件系統可能會不一致 死文件,誰也訪問不到了:已經沒有文件名指向這些空間了 須要FSCK或其餘機制回收空間
一、Linux同過mkdir命令建立一個新目錄/test/ 它的硬連接數怎麼查看佈局
ls -ld /test/ 權限後面的 數字爲硬連接的數量爲2. 緣由:建立的目錄自己爲一個硬連接 新建目錄下的隱藏目錄(點號)爲建立的新目錄又是一個連接,因此爲2個硬連接 ls -lai 能夠查看驗證!
提示:硬連接就至關於文件的另外一個入口。code