了解這個的時候不如先知道下檔案吧.
我們知道檔案都有檔名與資料,但是呢這個在 linux 上被分成兩個部分:使用者資料 (user data) 與元資料 (metadata)。
使用者資料,即檔案資料塊 (data block),資料塊是記錄檔案真實內容的地方;
而元資料則是檔案的附加屬性,如檔案大小、建立時間、所有者等資訊。
在 linux 中,元資料中的 inode 號(inode 是檔案元資料的一部分但其並不包含檔名,inode 號即索引節點號)才是檔案的唯一標識而非檔名。檔名是為了方便人們的記憶和使用
系統或程式通過 inode 號尋找正確的檔案資料塊,所以呢檔案讀取過程則為先讀取inode,然後找block資料。
你可能看了這麼久還是一臉懵逼的,不要著急看完例項,你就懂了。
一,硬鏈結
就是乙個檔案的乙個或多個檔名-->這麼簡單的回答是不是又懵逼了呢??
通俗的講硬鏈結就是乙個你的複製人,你在的時候你幹什麼他也幹什麼,但是你不在了,他是不會消失,就不受你約束了。
可是我還要講乙個呢---------ln命令 ---> ln [選項]... [檔案]...
你看著文章只需要掌握兩個
ln 目標檔案 創乙個個性化名字 ---->硬鏈結
ln -s 目標檔案 創乙個個性化名字------>軟鏈結
ln 就是建立鏈結的 ----->然後沒了。
ln 學會了現在正式開講 硬鏈結
我們通過硬鏈結的特性來去了解他吧
1,檔案具有相同的inode及data block,
我們先建立乙個檔案,現在我要給他新增硬鏈結,
建立好了
是不是建立好了??然後用ls -li 檢視下看到inode一樣的
這就是inode一樣。看到這裡肯定有個模糊的理解了吧,看張圖:
2,硬鏈結是不會占用空間的
這個你知道就行,記住不占用磁碟空間
3,只能對已存在的檔案進行建立
建立的時候原始檔要在,你不可能憑空出來個鏈結檔案吧??
4,不能對目錄進行建立,只可對檔案建立
對目錄建立是軟連線的事,硬鏈結只會建立檔案鏈結哦
5,無論哪個檔案輸入東西另乙個也會有
這就是複製人的強大
6,刪除乙個檔案另乙個是不受影響的
我們刪除原始檔看看:
不受影響,依舊能寫能讀
注意:目錄建立是不可以的哦
也不能交叉檔案系統
我是這樣理解乙個root 系統 乙個dev 裡面東西不一樣就不行了
二,軟連線
軟鏈結呢就像你的投影,為啥這樣說呢?你有的他有,你不在了他就變木頭
看下軟鏈結的讀取流程
看到錯誤沒呢?
建立的時候,要建立的內容不能帶/ 所以目錄名不能和檔名重合。
軟鏈結呢可以做硬鏈結的事,即可以檔案,也可以目錄哦
檔案屬性不同呢
2, 可對不存在的檔案或目錄建立軟鏈結
這個是不是強大多了?不過你建立好了,原始檔不再,建立的是沒用的呢
我們要怎麼讓他有用呢??
答案是建立原始檔
看不閃了 活了 ,,,
同樣可以推出,,假如刪除原始檔,鏈結檔案是不能用的,無效
3,檔案內容共享,無論**有新檔案還是內容,另一邊都會有
4,軟連線是可以對檔案或者目錄建立的
這個可以理解吧
5,建立軟鏈結時,鏈結計數 i_nlink 不會增加
Linux之軟鏈結與硬鏈結
在講區別前,讓我們先了解下ext檔案系統是如何工作的?例子 假設在系統查詢 root tmp test 的檔案時,系統是如何一步一步進行的 1 首先找到根目錄的 inode 根目錄的 inode 是系統已知的,inode 號是 2 然後判斷使用者是否有許可權訪問根目錄的 block 2 如果有許可權...
linux硬鏈結與軟鏈結
1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...
Linux 硬鏈結與軟鏈結
原貼 2007 08 05 10 19 49 linux硬鏈結與軟鏈結 2006 12 01 15 03 首先要弄清楚,在linux系統中,核心為每乙個新建立的檔案分配乙個inode 索引結點 每個檔案都有乙個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到內存在,從而實...