這個圖很清楚的表示出硬鏈接和軟鏈接的方式。
1.硬鏈接:
基本定義:硬鏈接是有着相同inode號的僅文件名不同的文件(該文件名包含路徑信息)。
理解:如圖,hard link和原始file通過同一個inode實現鏈接。在使用stat/ls -li查看這兩個文件名的時候,可以看到他們的inode號是一樣的。
特性:
文件有相同的inode和data block
只能對已存在的文件進行創建hard link
不能交叉文件系統進行創建
不能對目錄進行創建,只能對文件創建
刪除一個hard link文件並不影響其他有相同inode 號的文件,並且該文件也不會被刪除,只有等到所有的硬鏈接都刪除了,才刪除該inode及其相關data block的信息
2.軟鏈接:
基本定義:某文件的數據塊中存放的內容是另一文件的路徑名的指向(通過實驗發現,省去了相同的路徑部分)。則該文件就是symbol link。symbol link 有着自己的inode號以及用戶數據塊。
理解:如圖,symbol link有自己的inode,但是其數據塊中的內容是所鏈接的文件的文件名。
特性:
- 軟鏈接有自己的文件屬性及權限等;
- 可對不存在的文件或目錄創建軟鏈接;
- 軟鏈接可交叉文件系統;
- 軟鏈接可對文件或目錄創建;
- 創建軟鏈接時,鏈接計數 i_nlink 不會增加;
- 刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dyling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
相關操作:
創建硬鏈接:
ln 原始文件 硬鏈接文件
ln -s 原始文件 軟鏈接文件
stat或者ls -li 文件名 查看inode號等信息
find 起始目錄 -inum 1000 :從起始目錄開始查找inode號為1000的文件