1. 程式人生 > >檔案系統與軟硬連結

檔案系統與軟硬連結

檔案系統與軟硬連結

         以Linux最標準的ext2檔案系統為例。在Linux系統中,每個檔案不僅有資料(內容),還包括元資料(各種屬性),例如,所屬使用者組、所屬使用者、能否執行、檔案建立時間、檔案特殊屬性,等等。在ext2檔案系統中,將每個檔案的內容分為兩部分來儲存,一個是檔案屬性,另一個則是檔案的內容。

         ext2規劃出inode與塊來分別儲存檔案的屬性(放在inode)與檔案的內容(放在塊區域中)。要將一個分割槽格式化為ext2時,就必須要還制定inode與塊的大小才行,也即,他一定會有inode表與塊區域這兩個部分。(塊是資料儲存的最小單位)

         inode:記錄檔案相關屬性,以及檔案內容放在哪個塊內(即:具有指標功能,指向檔案內容放置的塊之中),當屬性內容過多,一個inode無法全部存下時,可以擴充套件一個塊,然後視這個被擴充套件的塊為inode的一部分,把剩餘的資訊存入即可(若還不夠,在擴充套件一個塊,由此類推),之後就是常規操作了。

         塊:用來儲存檔案內容。

【鍵入ls –i就可以檢視當前了目錄下的檔案及資料夾的inode號。】

目錄:在Linux的ext2檔案系統建立一個目錄時,ext2會給該目錄分配一個inode與至少一個塊。其中,inode記錄該目錄的相關屬性,並指向分配到的那個快;塊記錄在這個目錄下的相關檔案的關聯性

檔案:在Linux下的ext2建立普通檔案時,ext2會給該檔案分配至少一個inode與相對於該檔案大小的塊數量。例如,假設一個塊時4KB,建立一個100KB的檔案,Linux將分配一個inode一25個塊來儲存該檔案。

 

硬連結與軟連結概念

硬連線:是給檔案一個副本,同時建立兩者之間的連線關係。修改其中一個,與其連線的檔案同時被修改。如果刪除其中任意一個硬連結,其餘的檔案將不受影響。

軟連線:是對原始檔在新的位置建立一個“快捷方式”,所以,當原始檔刪除時,符號連線的檔案將成為無源之水->僅僅剩下個檔名了,當然刪除這個連線,也不會影響到原始檔,但對連線檔案的使用、引用都是直接呼叫原始檔的。


由上圖可知,硬連結原檔案與新檔案inode號一樣,而軟連結不一樣;

把副本刪除,硬連結1不會受到影響,而軟連線就不可用了;

把硬連結1刪除,副本不會受到影響,軟連結也不會受到影響;

把軟連線刪除,對於硬連結1還是副本都沒有影響;

還有一點就是,當生成副本後,就沒有所謂的原始檔。

在建立軟連線時,多采用相對路徑,這樣,可以避免在上級目錄被移動時造成軟連線失效。