在講硬鏈接與軟鏈接的區別之前,我們首先了解inode,了解inode讓我們更容易理解何為硬鏈接和軟鏈接。
inode概念
何為inode,inode就是索引節點,而inode表中存放著文件的元數據,何為元數據,元數據就是文件名稱、大小、時間戳、所有者、權限、inode等信息,而文件中的內容就是文件的數據,因此文件是由元數據(metadata)和數據(data)組成。Inode到底有什么用呢,請看下圖:
我們在查找文件時,是以文件名稱來查找,但是系統無法識別文件名稱,而是以inode號來查找文件的位置,因此 inode 號才是文件的唯一標識而非文件名,文件名僅是為了方便人們的記憶和使用,系統或程序都是通過 文件的inode 號查找到的文件數據塊。
硬鏈接概念
接下來了解一下何為硬鏈接和軟鏈接,硬鏈接:就是一個文件可以有一個或多個文件名。請看下圖:
是否看了圖2覺得對硬鏈接更容易理解了,硬鏈接其實就是有很多個文件名不一樣,但是元數據都是一樣的,都是指向同一個inode,并由inode號指向文件中的內容(數據),當編輯‘filename1’中的元數據或數據時,而filename2與filename3中的元數據與數據也會跟著改變,請看下圖:
硬鏈接總結:
-
創建硬鏈接會增加額外的記錄項以引用文件
-
對應于同一文件系統上一個物理文件
-
每個目錄引用相同的inode號
-
創建時鏈接數遞增
注意:刪除硬鏈接文件時
-
rm命令遞減計數的鏈接
-
文件要存在,至少有一個鏈接
-
當鏈接數為零時,該文件被刪除
-
不能跨越驅動器或分區
-
語法: ln filename [linkname]
軟鏈接概念
何為軟鏈接,軟鏈接又叫符號鏈接,這個文件包含了另一個文件的路徑名??梢允侨我馕募蚰夸?,可以鏈接不同文件系統的文件。請看下圖:
從上圖可以看出,軟鏈接的數據也就是另一個硬鏈接的路徑,其數據是引用硬鏈接文件的,但是元數據卻跟硬鏈接不一致,請看下圖:
是否已經對軟鏈接已經有一個新的認識了呢。
軟鏈接總結:
-
一個符號鏈接指向另一個文件
-
ls – l的 顯示鏈接的名稱和引用的文件
-
一個符號鏈接的內容是它引用文件的名稱
-
可以對目錄進行
-
可以跨分區
-
指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數
-
語法:ln -s filename [linkname]
接下來是重頭戲,軟鏈接與硬鏈接的區別:
-
硬鏈接和原文件沒有什么區別,而且共享一個 inode 號,除了名稱不一致,其它的數據以及元數據均一致;而軟鏈接不共享 inode,有自己獨立的 inode,與原文件的元數據也不一致,但是軟鏈接的數據是引用原文件的數據
-
若原文件刪除了,則軟連接則不可以訪問,但是軟鏈接還存在,而硬連接則是可以的,但是硬鏈接次數遞減,而軟軟件不會更改
-
由于符號鏈接的特性,導致其可以跨越磁盤分區及文件系統,但硬鏈接不具備這個特性
原創文章,作者:Aleen,如若轉載,請注明出處:http://www.www58058.com/27016