1. 程式人生 > 實用技巧 >inode結構體及軟連結和硬連結

inode結構體及軟連結和硬連結

首先先了解一下block(塊的概念),塊是檔案存取的最小單位,通常8個扇區為一個塊,而每個扇區的大小為512個位元組也就是0.5K,所以一個塊的大小也就是8*0.5K=4K。


系統通過inode來識別檔案


可以用命令stat檢視某檔案的inode資訊,如:stat client.c

可看到除了檔名以外的檔案資訊都在inode中,因此,inode是儲存檔案的資訊的,稱為索引節點

wKioL1cM5ViAlEdLAAAxqS5VukI792.png


一個檔案包括兩部分:一是它的元資訊,二是檔案資料

檔案資料就放在扇區上,但作業系統每次以塊為最小單元來讀資料

檔案元資訊儲存在叫做inode的區域中

wKiom1cM7ujhKe55AAAg2nDCsHM814.png


一些常用命令:

stat 檔名 //檢視某個檔案的inode資訊

df -i //檢視硬碟分割槽的inode總數和已使用的數量

ls -i 檔名 //檢視檔案的inode號碼

df -h //block



硬連結兩個或多個檔案的inode號相同,假設有兩個檔案A和B,A和B的inode號相同,則開啟A和B中任何一個檔案實質上打開了一個檔案,對其中一個進行操作另一個檔案也會改變。但刪除其中一個不會影響另一個檔案。

wKiom1cM9HSiF0M_AAAJsm2T9KI523.png

建立硬連結 ln 原始檔 目標檔案 (inode結構體中連結數會加1)


我先建立了一個test1.c檔案,然後通過硬連結命令創建出test2.c,檢視它們的inode號碼發現是一樣的,你可以開啟其中一個檔案進行編輯,儲存退出後再開啟另一個檔案,發現第二個檔案裡有和第一個檔案裡相同的內容,說明你開啟的其實是同一個檔案。

wKiom1cN_7iitkuCAAAfzcR6lMU057.png

此時用stat命令檢視檔案inode資訊,可以看到其中Links:2 表示連結數是2

wKiom1cOARiyrJMwAAAs-82jAWQ419.png

刪除其中一個檔案wKioL1cOAkSywfWhAAAJAHP6KAM090.png

在檢視inode資訊,發現連結數Links變為了1 但檔案依然存在

wKiom1cOAgvzndK1AAAtUpxZQ14774.png




軟連結:還是假設有A和B兩個檔案,且它們兩個的inode號不同,A檔案的內容為B的路徑,即開啟其中任何一個檔案都會開啟檔案B,稱A為B的軟連結。

wKioL1cM9T6DYXG7AAAGrRnsHMg912.png

建立軟連結 ln -s 原始檔 目標檔案


和上面硬連結一樣,先建立一個檔案test1.c,通過命令ln -s test1.c test2.c 建立軟連線

開啟test1.c 和test2.c後發現它們的內容其實是一樣的

wKioL1cOBPSDUMfQAAAY1sXGDRU405.png


但是這兩個檔案的inode號是不同的,可用命令ls -i 檔名進行檢視

wKioL1cOBZjCurCBAAAU2ObmiZ0213.png



轉載於:https://blog.51cto.com/lingdandan/1763181