第十一天 linux的硬鏈結和軟連線的區別

2022-03-07 16:50:37 字數 1623 閱讀 9423

硬鏈結與軟鏈結是 linux 檔案系統中的乙個重要概念,其涉及檔案系統中的索引節點 (index node 又稱 inode),而索引節點物件是 linux 虛擬檔案系統 (vfs) 的四個基本概念之一。通過剖析硬鏈結與軟鏈結的聯絡與區別,我們可更好的了解 linux 中 vfs 這一通用檔案模型。並讓 linux 普通使用者和系統管理員正確使用硬鏈結與軟鏈結,幫助檔案系統開發者獲取 inode 的相關知識。

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

圖1、通過檔名開啟檔案

檔案有相同的 inode 及 data block;

只能對已存在的檔案進行建立;

不能交叉檔案系統進行硬鏈結的建立;

不能對目錄進行建立,只可對檔案建立;

刪除乙個硬鏈結檔案並不影響其他有相同 inode 號的檔案。

軟鏈結與硬鏈結不同,若檔案使用者資料塊中存放的內容是另一檔案的路徑名的指向,則該檔案就是軟連線。

軟鏈結就是乙個普通檔案,只是資料塊內容有點特殊。軟鏈結有著自己的 inode 號以及使用者資料塊(見 圖 2.)。

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

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

軟鏈結可交叉檔案系統;

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

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

圖2、軟鏈結的訪問

在linux系統中,鏈結檔案分為兩種,一種被稱為硬鏈結(hard link),另一種被稱作軟鏈結(symbolic link)。

預設不帶引數的情況下,ln命令建立的是硬鏈結,帶-s 引數建立的是軟鏈結。

硬鏈結檔案與原始檔的inode節點號相同,而軟鏈結檔案的inode節點號與原始檔不同。

ln命令不能給目錄建立硬鏈結,但可以建立軟鏈結,對目錄的軟鏈結會經常用到。

刪除軟鏈結檔案,對原始檔及硬鏈結檔案無任何影響。

刪除檔案的硬鏈結檔案,對原始檔及其軟鏈結檔案啊你無任何影響,只是檔案的i_link減一。

刪除鏈結檔案的原始檔,對硬鏈結檔案無影響,會導致其軟鏈結失效(紅底白字閃爍狀)。

同時刪除原始檔及其硬鏈結檔案,而且沒有系統呼叫此檔案,整個檔案才被真正刪除。

很對硬體裝置中的快照功能,使用的就類似硬鏈結的原理。

軟鏈結可以跨檔案系統,硬體連線不可以跨檔案系統。

二、檔案刪除原理:

Linux學習第十一天

一 昨日回顧 1 訊號處理sigaction 2 使用sigaction如何實現不斷重入效果?struct sigaction act act.sa flags sa siginfo sa nodefer 3 想在2號訊號的處理流程過程中,遮蔽3號訊號 struct sigaction act ac...

UnixC第十一天

回憶昨天內容 一 訊號阻塞 sigprocmask 2 sigset t 訊號阻塞和訊號忽略的區別 可靠訊號 不可靠 訊號丟失 二 獲取程序的未決訊號集 從未決訊號集中找未決訊號 sigpending 2 什麼是未決訊號?三 訊號從產生到處理的整個過程 四 system v ipc 訊息佇列 獲取乙...

第十一天作業

第一題 import time import random deffoo print 開始執行。time.sleep random.uniform 1,3 print 執行完畢 return 都結束了 print foo 第二題 import time import random deffoo pr...