1. 程式人生 > >UNIX硬連結,軟連結(符號連結),檔案複製

UNIX硬連結,軟連結(符號連結),檔案複製

學習APUE第四章被硬連結和符號連結搞的頭暈,下面綜合網上和課本資料總結如下:

一.首先在區別前得搞清楚UNIX檔案系統的基本結構

(2).基本結構:即檔案系統是如何管理資料的,也就是資料結構的型別,此處所講的是inode資料結構

(3)inode資料結構:(摘自鳥哥私房菜基礎學習篇第三版P198)

super  block(超級塊):記錄此檔案系統的整體資訊,包括inode/block的總量和使用量,剩餘量以及檔案系統的格式和相關的資訊;

block(資料塊):實際記錄檔案的內容,若檔案太大,會佔用多個block。

目錄項:由於一個i節點可能會有不同的檔名,所以維護這些檔名的陣列即為目錄項,目錄項中的每一項包括檔案索引節點i的節點號和檔名,所以目錄只是將檔案的名稱和它的i節點號結合在一起的一張表。舉例來說,i節點和資料塊好比一個真實的人,但是這個人可能會有不同的名字(中文名,英文名,外號等等),而這些名字就是它的的目錄項,不管你的名字如何變化,我這個人是不會變的。

inode(i節點):記錄檔案的屬性,一個檔案佔用一個一個Inode,同時記錄該檔案的資料所在的block號碼,一個i節點至少有一個目錄項;

希望大家可以結合APUE的P91-P93理解。

二.接下來區別這三個概念

(1)硬連結:也就是上面所說的一個I節點對應不同的目錄項,這些不同目錄項(檔名)之間的關係就是硬連結。

(2)符號連結(軟連結):假設A連結B檔案,那麼A檔案和B檔案的inode資料結構的四個部分都不同,也就是在底層無任何關係,當訪問時A檔案通過尋找自己資料塊中的記錄的路徑找到B檔案的目錄項(檔名),然後訪問B檔案的資料。可以利用下圖簡單粗暴的理解:

(3)檔案複製:假設A複製B,則A與B的inode的四部分都不同,無任何關係,只是A和B的資料塊部分的資料一模一樣。