linux硬鏈結與軟連線

2021-09-05 10:59:12 字數 2261 閱讀 6006

linux通過鏈結來為檔案向使用者程式提供多個入口,linux鏈結有兩種:一種稱為硬鏈結(hard link),另一種稱為符號鏈結(symbolic link),也常被稱為軟鏈結,預設情況下,ln命令產生硬鏈結。硬鏈結通過索引節點(inode)進行鏈結,這樣多個檔名指向同乙個索引節點,也就使得乙個檔案可以擁有多個有效的路徑名;需要刪除全部的鏈結才會將inode對應的資料塊真正刪除,硬鏈結有以下特性

1.不能對目錄建立硬鏈結

2.硬鏈結只能正對同樣的檔案系統來建立

3.刪除乙個硬鏈結檔案並不影響其他相同的inode檔案

4.檔案有相同的inode以及資料塊

在linux中檔案是有元資料與檔案資料塊組成,檔案資料塊是記錄檔案內容的地方,而元資料則是檔案的一些屬性資訊,包括檔案大小,建立時間,所有者資訊,在linux中通過inode來確立檔案的唯一性,而不是檔名,系統通過inode來管理檔案資料。

inode可以通過ls -i檢視,用stat可以檢視檔案元資料其他資訊,包括inode

$ stat buildspec.mk

file: buildspec.mk

size: 4213          blocks: 16         io block: 4096   regular file

device: 806h/2054d    inode: 8728177     links: 1

access: (0444/-r--r--r--)  uid: ( 1000/   imbak)   gid: ( 1000/   imbak)

access: 2018-12-26 09:45:12.215003200 +0800

modify: 2018-12-24 21:14:05.255793076 +0800

change: 2018-12-24 21:14:05.255793076 +0800

linux引入硬連線(hard link) 與軟連線(soft link),為的是解決檔案共享問題,連線為linux解決了檔案的共享使用,還帶來了隱藏檔案路徑、增加許可權安全及節省儲存的好處。若乙個inode對應多個檔名,則稱這些檔案為硬連線,也就是說同乙個檔案使用了多個名字,硬鏈結可以由命令link或ln建立,通過對buildspec.mk進行link (link buildspec.mk new.mk) 操作,可以發現兩個檔案的的inode相同。

$ stat new.mk

file: new.mk

size: 4213          blocks: 16         io block: 4096   regular file

device: 806h/2054d    inode: 8728177     links: 2

access: (0444/-r--r--r--)  uid: ( 1000/   imbak)   gid: ( 1000/   imbak)

access: 2018-12-26 09:45:12.215003200 +0800

modify: 2018-12-24 21:14:05.255793076 +0800

change: 2018-12-26 17:51:26.448845043 +0800

birth: -

$ stat buildspec.mk

file: buildspec.mk

size: 4213          blocks: 16         io block: 4096   regular file

device: 806h/2054d    inode: 8728177     links: 2

access: (0444/-r--r--r--)  uid: ( 1000/   imbak)   gid: ( 1000/   imbak)

access: 2018-12-26 09:45:12.215003200 +0800

modify: 2018-12-24 21:14:05.255793076 +0800

change: 2018-12-26 17:51:26.448845043 +0800

birth: -

軟鏈結與硬鏈結不同,若檔案使用者資料塊中存放的內容是另以檔案的路徑名的指向,則該檔案就是軟鏈結。軟鏈結是乙個普通檔案,知識資料塊內容有點特殊。軟鏈結有著自己的inode號以及使用者資料塊。因此軟鏈結的建立與使用沒有類似硬鏈結的諸多限制:

1.軟鏈結有自己的檔案屬性及許可權等;

2.可對不存在的檔案或目錄建立軟鏈結;

3.軟鏈結可交叉檔案系統;

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

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

Linux 軟連線與硬鏈結

檔案都有檔名與資料,這在 linux 上被分成兩個部分 使用者資料 user data 與元資料 metadata 使用者資料,即檔案資料塊 data block 資料塊是記錄檔案真實內容的地方 而元資料則是檔案的附加屬性,如檔案大小 建立時間 所有者等資訊。在 linux 中,元資料中的 inod...

Linux硬鏈結與軟連線

linux檔案包含兩部分資料,使用者資料和元資料,期中使用者資料存放的就是檔案的儲存內容,元資料儲存的即是檔案的屬性,所有者,許可權,建立時間,還有乙個最重要的就是inode號.在linux系統中,真正區分乙個檔案的是這個檔案的inode號而非檔名,並且多個檔名對應乙個inode號也是很常見的,因此...

Linux 硬鏈結 軟連線

情景說明 有時候在linux下我們有乙個大的工程跟絕對路徑相關,現在又想通過eclipse檢視原始碼和修改原始碼,那麼問題來了 1.如果我們把原始碼拷貝乙份到eclipse工程裡面,那麼此時修改了某個檔案之後還得手動複製到可以執行的原始工程目錄下,這樣操作很麻煩。2.如果直接重新把原始碼部署在ecl...