linux系統檔案的鏈結

2022-03-26 20:35:45 字數 1797 閱讀 3086

(以linux系統為例)

(1) 這行文字儲存在磁碟資料區某個具體位置裡(物理上要通過磁頭號、柱面號和扇區號來描述,在本例中假設分別是1、20、30)。

(2) 假設其inode是262457,那麼系統通過一段標準程式,就能將這個inode轉換成存放此檔案的具體實體地址(1磁頭、20柱面、30扇區),最終讀出檔案的內容:「this is my file.」

(3) 所以inode是指向乙個檔案資料區的指標號碼,乙個inode對應著系統中唯一的一片物理資料區,而位於兩個不同物理資料區的檔案必定分別對應著兩個不同的inode號碼。通過上面的討論,我們知道:

(1) 1個inode號碼肯定和一片完全屬於乙個檔案的資料區一一對應。那麼乙個檔案系統中兩個或更多個不同的檔名能否對應同乙個檔案呢?答案是肯定的。

(2) 我們知道inode號碼是記錄在檔名對應的目錄項中的,我們可以使兩個或多個檔案的目錄項具有相同的inode值,實際上就使它們對應著同乙個檔案。

(3) 有幾個目錄項具有相同的inode號,我們就說這個檔案有幾個硬連線(hardlink)。

(4) 對於普通檔案,ls -l命令的連線計數count域的數值就是本檔案擁有的硬連線數。硬連線可以通過ln命令建立

(5) 例如:

# ln /home/zyd/mytext hardlink_mytext,就建立了乙個新的檔案hardlink_mytext,這個檔案的inode同樣是262457。建立硬連線實際上只是增加了乙個目錄項,原檔案的資料區由兩個檔案共享。這一方面能夠節約大量磁碟空間,同時可以保證兩個檔案能同步更新。

262457 -rw-rw-r-- 2 zyd zyd 17 nov 3 14:50 hardlink_mytext

262457 -rw-rw-r-- 2 zyd zyd 17 nov 3 14:50 mytext

檔案的連線計數域表明本系統中共有幾個檔案目錄項的inode和本檔案相同,也就是本檔案共有幾個硬連線。如上面的例子中hardlink_mytext和mytext檔案的count值都是2。

目錄的count同樣表示共有多少個目錄項指向此目錄,具體是等於本目錄包含的直接子目錄數(包括目錄」.」和」..」,不包括子目錄以下的目錄)

當我們刪除其中乙個檔案時,系統首先將(count-1)->;count,如果結果是零,就將其目錄項和資料區都刪除,否則只將本目錄項刪除,資料區仍然保留,仍然可以通過另外的檔名訪問。根據這個特性,可以通過為重要的檔案建立硬連線的方法來防止其被誤刪除。

(1) 複製

在當前目錄複製乙個檔案,需要

a. 在當前目錄中增加乙個目錄項,其檔名域填入新名字,並分配了乙個新的inode號;

b. 將原檔案的內容複製了乙份到新的空閒物理塊;

c. 填寫一些其他關鍵資訊,使系統通過這些資訊及inode號碼可以完成實體地址的轉換。

所以檔案複製要分配新的inode和新的資料區,雖然兩個檔案的內容是一樣的。

(2) 硬鏈結

建立硬連線實際上只是增加了乙個目錄項,但並不複製檔案資料區,原檔案的資料區由兩個檔案共享。

(1) 不能跨檔案系統

(2) 不能鏈結目錄

軟鏈結就是建立乙個獨立的檔案,這個檔案會讓資料的讀取指向它連線的檔案內容,類似於windows系統的快捷方式。由於軟鏈結是乙個獨立檔案,因此會分配新的inode與塊。

通過ln –s 原始檔 符號鏈結檔案 可以建立乙個符號鏈結。

1. 《shell十三問》

(完)

Linux系統鏈結檔案

1 軟鏈結 linux的軟鏈結檔案類似於windows系統中的 快捷鍵方式 裡面存放的是原始檔的路徑,並指向原始檔實體,因此通過訪問這個 快捷方式 可快速訪問到原始檔,軟鏈結檔案型別是l。執行命令 ln s 原始檔 軟鏈結檔案 可完成軟鏈結的建立。注意 軟鏈結和原始檔是不同型別的檔案,所以inode...

linux檔案系統 軟鏈結和硬鏈結

硬鏈結ln src dest ubpara link ls il 總用量 8 660108 rw rw r 1 ubpara ubpara 9 5月 14 19 41 a 660109 drwxrwxr x 2 ubpara ubpara 4096 5月 14 19 42 test ubpara l...

linux檔案的鏈結

在linux中,檔案的鏈結分為硬鏈結和軟鏈結。在linux中,每乙個檔案都會被指定有乙個節點,儲存器在查詢檔案的時候,都是通過這個節點進行判斷的。而在linux中允許乙個節點,指向多個檔案,這多個檔案是等價的。所以這樣就產生了硬鏈結。硬鏈結就是為乙個檔案建立乙個副本,這個副本指向這個檔案的節點。所以...