1. 程式人生 > >Linux 的硬連結與軟連結

Linux 的硬連結與軟連結

硬連線:
若一個 inode 號對應多個檔名,則稱這些檔案為硬連結。換言之,硬連結就是同一個檔案使用了多個別名(見 圖 2.hard link 就是 file 的一個別名,他們有共同的 inode),建立硬連結:
[email protected]:~# ln oldfile hardlink

[email protected]:~# link oldfile hardlink2

軟連結:
若檔案使用者資料塊中存放的內容是另一檔案的路徑名的指向,則該檔案就是軟連線。軟連結就是一個普通檔案,只是資料塊內容有點特殊。軟連結有著自己的 inode 號以及使用者資料塊.建立軟連線:

[email protected]:~# ln -s oldfile softlink

硬連結和軟連結的特點和區別
由於硬連結是有著相同 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

參考資料理解 Linux 的硬連結與軟連結