硬鏈接與軟鏈接的聯系與區別
文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。元數據中的inode才是文件的唯一標識而非文件名。為了方便使用者記憶和使用才有了文件名。
為了解決文件的共享使用,Linux系統就引入了兩種鏈接:硬鏈接和軟鏈接(又叫符號鏈接)。鏈接為Linux系統解決了文件共享使用,還帶來了隱藏文件路徑,增加權限安全及節省存儲等眾多實用的便利。
硬鏈接:如果一個inode號對應多個文件名,則稱這些文件為硬鏈接。也就是說硬鏈接就是同一個文件使用了多個名字,他們有一個共同的inode號。
軟連接:在liunx中的所有都是以文件表示的,軟連接可以看成一個文本文件,它的內容是保存目標文件名的路徑地址,這個文件包含了另一個文件的路徑名,而且可以是任意文件或目錄,通俗點說就跟win下的快捷方式差不多。使用相對路徑創建的軟鏈接被移動后該軟鏈接文件將成為一個死鏈接
兩者的區別:
1,硬鏈接不能對目錄創建,只能對文件創建。
2, 文件有相同的 inode 及文件數據塊( data block);
3, 不能交叉文件系統進行硬鏈接的創建;
4, 只能對已存在的文件進行創建;
5, 刪除一個硬鏈接文件并不影響其他有相同 inode 號的文件。
6, 軟鏈接有自己的文件屬性及權限等;
7, 可對不存在的文件或目錄創建軟鏈接;
8, 軟鏈接可交叉文件系統;
9, 軟鏈接可對文件或目錄創建;
10, 創建軟鏈接時,鏈接計數 i_nlink 不會增加;
11, 刪除軟鏈接并不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
原創文章,作者:stacey,如若轉載,請注明出處:http://www.www58058.com/53242