天天看點

硬連結、軟連結

目錄

硬連結與軟連結

硬連結

軟連結

硬連結與軟連結

檔案都有檔案名與資料,在 Linux 上被分成兩個部分:使用者資料 (user data) 與中繼資料 (metadata)。

使用者資料,檔案資料塊 (data block),資料塊是記錄檔案真實内容的地方;

中繼資料,檔案的附加屬性,如檔案大小、建立時間、所有者等資訊。

在 Linux 中,中繼資料中的 inode 号(inode 是檔案中繼資料的一部分但其并不包含檔案名,inode 号即索引節點号)才是檔案的唯一辨別而非檔案名。檔案名僅是為了友善人們的記憶和使用,系統或程式通過 inode 号尋找正确的檔案資料塊。

硬連結、軟連結

在 Linux 系統中檢視 inode 号可使用指令 stat 或 ls -i

使用指令 mv 移動并重命名檔案 a.c,其結果不影響檔案的使用者資料及 inode 号,

為解決檔案的共享使用,Linux 系統引入了兩種連結:

硬連結 (hard link) 與軟連結(又稱符号連結,即 soft link 或 symbolic link)。

連結為 Linux 系統解決了檔案的共享使用,還帶來了隐藏檔案路徑、增權重限安全及節省存儲等好處。

硬連結

若一個 inode 号對應多個檔案名,則稱這些檔案為硬連結。硬連結就是同一個檔案使用了多個别名;

硬連結可由指令 link 或 ln 建立。如下是對檔案 oldfile 建立硬連結。

硬連結、軟連結

硬連結存在以下幾點特性:

  • 檔案有相同的 inode 及 data block;
  • 隻能對已存在的檔案進行建立;
  • 不能交叉檔案系統進行硬連結的建立;//硬連結建立時不可跨檔案系統
  • 不能對目錄進行建立,隻可對檔案建立;
  • 删除一個硬連結檔案并不影響其他有相同 inode 号的檔案。

inode 是随着檔案的存在而存在,是以隻有當檔案存在時才可建立硬連結,即當 inode 存在且連結計數器(link count)不為 0 時。inode 号僅在各檔案系統下是唯一的,當 Linux 挂載多個檔案系統後将出現 inode 号重複的現象,是以硬連結建立時不可跨檔案系統。

軟連結

檔案使用者資料塊中存放的内容是另一檔案的路徑名的指向,則該檔案就是軟連接配接。軟連結就是一個普通檔案,隻是資料塊内容有點特殊。軟連結有着自己的 inode 号以及使用者資料塊(軟連結的建立與使用沒有類似硬連結的諸多限制:

軟連結存在以下幾點特性:

  • 軟連結有自己的檔案屬性及權限等;
  • 可對不存在的檔案或目錄建立軟連結;
  • 軟連結可交叉檔案系統;
  • 軟連結可對檔案或目錄建立;
  • 建立軟連結時,連結計數 i_nlink 不會增加;
  • 删除軟連結并不影響被指向的檔案,但若被指向的原檔案被删除,則相關軟連接配接被稱為死連結(即 dangling link,若被指向路徑檔案被重新建立,死連結可恢複為正常的軟連結)
硬連結、軟連結

繼續閱讀