Linux 硬鏈結與軟鏈結

2021-08-20 20:00:17 字數 2073 閱讀 7601

我們知道檔案都有檔名資料,這在 linux 上被分成兩個部分:使用者資料 (user data)元資料 (metadata)。使用者資料,即檔案資料塊 (data block),資料塊是記錄檔案真實內容的地方;而元資料則是檔案的附加屬性,如檔案大小、建立時間、所有者等資訊。在 linux 中,元資料中的 inode 號(inode 是檔案元資料的一部分但其並不包含檔名,inode 號即索引節點號)才是檔案的唯一標識而非檔名。檔名僅是為了方便人們的記憶和使用,系統或程式通過 inode 號尋找正確的檔案資料塊。

ln oldfile newfile
ln -s oldfile newfile
簡單理解其實硬鏈結就相當於是複製了乙份檔案,然後會隨著原始檔同步更新可對不存在的檔案或目錄建立軟鏈結;

軟鏈結可交叉檔案系統;

軟鏈結可對檔案或目錄建立;

建立軟鏈結時,鏈結計數 i_nlink 不會增加;

刪除軟鏈結並不影響被指向的檔案,但若被指向的原檔案被刪除,則相關軟連線被稱為死鏈結(即 dangling link,若被指向路徑檔案被重新建立,死鏈結可恢復為正常的軟鏈結

軟鏈結可以理解成快捷方式。它和windows下的快捷方式的作用是一樣的

find 命令,可查詢某檔案的軟鏈結,還可以用於查詢相同 inode 的所有硬鏈結

// 查詢在路徑 /home 下的檔案 data.txt 的軟鏈結

$ find /home -lname

data

.txt

/home/harris/debug/test2/a

// 檢視路徑 /home 有相同 inode 的所有硬鏈結

$ find /home -samefile /home/harris/debug/test3/old.file

/home/harris/debug/test3/hard.

link

/home/harris/debug/test3/old.file

$ find /home -inum

660650

/home/harris/debug/test3/hard.

link

/home/harris/debug/test3/old.file

// 列出路徑 /home/harris/debug/ 下的所有軟鏈結檔案

$ find /home/harris/debug/

-type l -ls

656662

0 lrwxrwxrwx 1 harris harris 1 sep 1

14:37 /home/harris/debug/test2/b -> a

656627

0 lrwxrwxrwx 1 harris harris 8 sep 1

14:37 /home/harris/debug/test2/a ->

data

.txt

789467

0 lrwxrwxrwx 1 root root 8 sep 1

18:00 /home/harris/debug/test/soft.

link

->

old.file

789496

0 lrwxrwxrwx 1 root root 7 sep 1

18:01

/home/harris/debug/test/soft.

link

.dir -> old.dir

linux硬鏈結與軟鏈結

1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...

Linux 硬鏈結與軟鏈結

原貼 2007 08 05 10 19 49 linux硬鏈結與軟鏈結 2006 12 01 15 03 首先要弄清楚,在linux系統中,核心為每乙個新建立的檔案分配乙個inode 索引結點 每個檔案都有乙個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到內存在,從而實...

linux硬鏈結與軟鏈結

1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...