Linux 的硬連結與軟連結
硬連線:
若一個 inode 號對應多個檔名,則稱這些檔案為硬連結。換言之,硬連結就是同一個檔案使用了多個別名(見 圖 2.hard link 就是 file 的一個別名,他們有共同的 inode),建立硬連結:
[email protected]:~# ln oldfile hardlink
或
[email protected]:~# link oldfile hardlink2
軟連結:
若檔案使用者資料塊中存放的內容是另一檔案的路徑名的指向,則該檔案就是軟連線。軟連結就是一個普通檔案,只是資料塊內容有點特殊。軟連結有著自己的 inode 號以及使用者資料塊.建立軟連線:
硬連結和軟連結的特點和區別
由於硬連結是有著相同 inode 號僅檔名不同的檔案,因此硬連結存在以下幾點特性:
-
檔案有相同的 inode 及 data block;
-
只能對已存在的檔案進行建立;
-
不能交叉檔案系統進行硬連結的建立;
-
不能對目錄進行建立,只可對檔案建立;
-
刪除一個硬連結檔案並不影響其他有相同 inode 號的檔案。
軟連結的建立與使用沒有類似硬連結的諸多限制:
- 軟連結有自己的檔案屬性及許可權等
- 可對不存在的檔案或目錄建立軟連結
- 軟連結可交叉檔案系統
- 軟連結可對檔案或目錄建立
- 建立軟連結時,連結計數 i_nlink 不會增加
- 刪除軟連結並不影響被指向的檔案,但若被指向的原檔案被刪除,則相關軟連線被稱為死連結(即 dangling link,若被指向路徑檔案被重新建立,死連結可恢復為正常的軟連結)
相關命令
1.find
查詢oldfile檔案的硬連結
[email protected]:~# find . -samefile oldfile
./hardlink2
./oldfile
./hardlink
[email protected]:~# find -inum 48500016
./hardlink2
./oldfile
./hardlink
列出當前目錄的軟連結檔案
[email protected]:~# find . -type l -li
48499918 0 lrwxrwxrwx 1 root root 7 Nov 27 19:20 ./softlink -> oldfile
2.stat
[email protected]:~# stat oldfile
File: ‘oldfile’
Size: 11 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 48500016 Links: 3
Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-27 17:14:17.858063930 -0800
Modify: 2018-11-12 20:39:46.230487500 -0800
Change: 2018-11-27 17:25:35.094075202 -0800
Birth: -
[email protected]:~# stat hardlink
File: ‘hardlink’
Size: 11 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 48500016 Links: 3
Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-27 17:14:17.858063930 -0800
Modify: 2018-11-12 20:39:46.230487500 -0800
Change: 2018-11-27 17:25:35.094075202 -0800
Birth: -
[email protected]:~# stat softlink
File: ‘softlink’ -> ‘oldfile’
Size: 7 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 48499918 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-27 19:20:40.070190128 -0800
Modify: 2018-11-27 19:20:36.594190070 -0800
Change: 2018-11-27 19:20:36.594190070 -0800