我們知道文件都有文件名與數據,這在 Linux 上被分成兩個部分:
用戶數據 (user data) 與元數據 (
metadata)。
用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;
元數據則是文件的附加屬性,如文件名、文件大小、創建時間、所有者、文件所在的inode等信息。
在 Linux 中,元數據中的 inode 號(inode 號即索引節點號)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。
元數據則是文件的附加屬性,如文件名、文件大小、創建時間、所有者、文件所在的inode等信息。
在 Linux 中,元數據中的 inode 號(inode 號即索引節點號)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。
硬鏈接
硬鏈接是新的目錄條目,其引用系統中的現有文件。文件系統中的每一文件默認具有一個硬鏈接。為節省空間,可以不復制文件,而創建引用同一文件的新硬鏈接。新硬鏈接如果在與現有硬鏈接相同的目錄中創建,則需要有不同的文件名,否則需要在不同的目錄中。指向同一文件的所有硬鏈接具有相同的權限、連接數、用戶/組所有權、時間戳以及文件內容。指向同一文件內容的硬鏈接需要在相同的文件系統中。
簡單說,硬鏈接就是一個 inode 號對應多個文件。就是同一個文件使用了多個別名(上圖中 hard link 就是 file 的一個別名,他們有共同的 inode)
由於硬鏈接是有着相同 inode 號僅文件名不同的文件,因此硬鏈接存在以下幾點特性:
(1)文件有相同的 inode 及 data block;
(2)只能對已存在的文件進行創建;
(3)不能交叉文件系統進行硬鏈接的創建;
(4)不能對目錄進行創建,只可對文件創建;
(5)刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。
(2)只能對已存在的文件進行創建;
(3)不能交叉文件系統進行硬鏈接的創建;
(4)不能對目錄進行創建,只可對文件創建;
(5)刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。
創建方法:ln file newfile
軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)
軟鏈接與硬鏈接不同,若文件用戶數據塊中存放的內容是另一文件的路徑名的指向,則該文件就是軟連接。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接有着自己的 inode 號以及用戶數據塊。軟連接可以指向目錄,而且軟連接所指向的目錄可以位於不同的文件系統中。
軟鏈接特性:
(1)軟鏈接有自己的文件屬性及權限等;
(2)可對不存在的文件或目錄創建軟鏈接;
(3)軟鏈接可交叉文件系統;
(4)軟鏈接可對文件或目錄創建;
(5)創建軟鏈接時,鏈接計數 i_nlink 不會增加;
(6)刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接或懸掛的軟鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
(2)可對不存在的文件或目錄創建軟鏈接;
(3)軟鏈接可交叉文件系統;
(4)軟鏈接可對文件或目錄創建;
(5)創建軟鏈接時,鏈接計數 i_nlink 不會增加;
(6)刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接或懸掛的軟鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
創建方法:ln -s file newfile
參考博客