inode結構體及軟連結和硬連結
首先先了解一下block(塊的概念),塊是檔案存取的最小單位,通常8個扇區為一個塊,而每個扇區的大小為512個位元組也就是0.5K,所以一個塊的大小也就是8*0.5K=4K。
系統通過inode來識別檔案
可以用命令stat檢視某檔案的inode資訊,如:stat client.c
可看到除了檔名以外的檔案資訊都在inode中,因此,inode是儲存檔案的資訊的,稱為索引節點
一個檔案包括兩部分:一是它的元資訊,二是檔案資料
檔案資料就放在扇區上,但作業系統每次以塊為最小單元來讀資料
檔案元資訊儲存在叫做inode的區域中
一些常用命令:
stat 檔名 //檢視某個檔案的inode資訊
df -i //檢視硬碟分割槽的inode總數和已使用的數量
ls -i 檔名 //檢視檔案的inode號碼
df -h //block
硬連結:兩個或多個檔案的inode號相同,假設有兩個檔案A和B,A和B的inode號相同,則開啟A和B中任何一個檔案實質上打開了一個檔案,對其中一個進行操作另一個檔案也會改變。但刪除其中一個不會影響另一個檔案。
建立硬連結 ln 原始檔 目標檔案 (inode結構體中連結數會加1)
我先建立了一個test1.c檔案,然後通過硬連結命令創建出test2.c,檢視它們的inode號碼發現是一樣的,你可以開啟其中一個檔案進行編輯,儲存退出後再開啟另一個檔案,發現第二個檔案裡有和第一個檔案裡相同的內容,說明你開啟的其實是同一個檔案。
此時用stat命令檢視檔案inode資訊,可以看到其中Links:2 表示連結數是2
在檢視inode資訊,發現連結數Links變為了1 但檔案依然存在
軟連結:還是假設有A和B兩個檔案,且它們兩個的inode號不同,A檔案的內容為B的路徑,即開啟其中任何一個檔案都會開啟檔案B,稱A為B的軟連結。
建立軟連結 ln -s 原始檔 目標檔案
和上面硬連結一樣,先建立一個檔案test1.c,通過命令ln -s test1.c test2.c 建立軟連線
開啟test1.c 和test2.c後發現它們的內容其實是一樣的
但是這兩個檔案的inode號是不同的,可用命令ls -i 檔名進行檢視
轉載於:https://blog.51cto.com/lingdandan/1763181