linux目錄和硬連結

myownstars發表於2013-03-07

目錄和檔案

Linux上所有裝置都被看作檔案來處理,包括資料目錄在內;而每個檔案又分兩部分:使用者資料user data;後設資料metadata

其中後者儲存於inode(每個128位元組),這也是識別檔案的唯一識別符號,包括該檔案所屬使用者/組,建立/更新/訪問時間,檔案大小/型別/訪問許可權等,指向檔案內容的指標。

同理,每個資料目錄也包含兩部分,其中user data存放其下屬檔案的關聯資訊,包括檔名;

當讀取一個檔案時,會先訪問目錄/,然後逐層獲取其父目錄的inode,然後由其父目錄user data中的檔案關聯性獲取該檔案inode,根據inode的塊指標讀取資料;

 

 

 

 

硬連結

和原檔名指向同一個inode,因此擁有相同的inodedata block

不能跨越檔案系統

每個目錄預設兩個硬連結,當前目錄(.)和父目錄(..)

使用rm刪除檔案時並不立即清空inodedata block,僅刪除其父目錄下的檔案關聯資訊,使用者再次訪問時無法關聯到該檔案inode,而硬連結則提供了相應的冗餘功能;

 

軟連結

型別windows的快捷方式,但其指向的是原檔名而非inode,如該檔案被刪除則軟連結也會失效

軟連結擁有自己的inode

 

 

inode中有2個計數器:i_nlink,記錄該檔案的硬連結數;i_count開啟該檔案的程式數量;只有當兩個全為0時該檔案才算被刪除

注:即便i_nlink0,只要此時有程式已經開啟該檔案即i_count不為0,就可以將其恢復  http://space.itpub.net/15480802/viewspace-715249

 

Session 1開啟檔案asdf

$ vi asdf

asdfasdfasdf

Session 2 刪除檔案,但是透過ls –altr發現該檔案並未實際刪除,只是被重新命名了

$ rm asdf

$ ls -altr

-rw-r--r--   1 oracle oinstall  12288 Jan 25 17:23 .asdf.swp

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-755454/,如需轉載,請註明出處,否則將追究法律責任。

相關文章