Linux之索引節點inode(index node)

inode就是索引節點,它用來存放檔案及目錄的基本信息,包含時間、檔名、使用者及羣組等。node


inode 是 UNIX/Linux 操做系統中的一種數據結構,其本質是結構體數據結構

它包含了與文件系統中各個文件相關的一些重要信息ide


每個索引節點都是一個表項,包含有關文件的信息(元數據):spa

  • 文件類型,權限,UID,GID 操作系統

  • 連接數(指向這個文件名路徑名稱個數) 指針

  • 該文件的大小和不一樣的時間戳 orm

  • 指向磁盤上文件的數據塊指針 對象

  • 有關文件的其餘數據索引



如圖:
開發

blob.png



    所以,在Linux中建立文件系統時,同時將會建立大量的inode一般,文件系統磁盤空間中大約百分之一空間分配給了inode表

    文件引用的是一個inode號,所以,當用戶搜索或者訪問一個文件時,Linux系統經過 inode 表查找正確的 inode 編號。在找到 inode 編號以後,相關的命令才能夠訪問該 inode ,並對其進行適當的更改,因此,一個目錄是目錄下的文件名和文件inode號之間的映射,以下圖:

blob.png

使用stat filename能夠查看

blob.png

使用df -i 能夠查看分區的inode使用率

blob.png

使用 ls -i filename能夠查看inode號

blob.png



    

    使用cp命令時,系統會分配一個空閒的inode號,在inode表中生成新條目 在目錄中建立一個目錄項,將名稱與inode編號關聯 拷貝數據生成新的文件


    使用rm命令時,會使連接數遞減,從而釋放的inode號能夠被重用,把數據塊放在空閒列表中,刪除目錄項數據實際上不會立刻被刪除,但當另外一個文件使用數據塊時將被覆蓋。


    使用mv命令時,若是mv命令的目標和源在相同的文件系統,做爲mv命令,用新的文件名建立對應新的目錄項,刪除舊目錄條目對應的舊的文件名,不影響inode表(除時間戳)或磁盤上的數據位置,沒有數據被移動!若是目標和源在一個不一樣的文件系統,mv至關於cp和rm




硬連接

硬連接就是一個文件擁有多個文件名字,多個文件名都指向同一個文件

當硬鏈接創建之後,硬鏈接雙方任何一個對象被修改,都會形成對應的鏈接對象被修改

硬鏈接是不會創建inode的,他只是在文件原來的inode link count域再增長1而已,也所以硬連接是不能夠跨越文件系統的


特性:

  •     硬連接不容許給目錄建立,也不能跨分區建立

  •     建立硬連接會增長額外的記錄項以引用文件 

  •     每一個文件引用相同的inode號 

  •     建立時連接數遞增 



語法:ln filename linkfilename




軟連接,又稱符號連接,和Windows系統的快捷方式相似

軟連接文件只是其源文件的一個標記,當刪除了源文件後,連接文件不能獨立存在,雖然仍保留文件名,但卻不能查看軟連接文件的內容了


特性:

  •    一個符號連接指向另外一個文件

  •    可使用ls - l的 顯示連接的名稱和引用的文件

  •    一個符號連接的內容是它引用文件的名稱 

  •    能夠對目錄進行 ,能夠跨分區

  •    指向的是另外一個文件的路徑;其大小爲指向的路徑字符串的長度;

        不增長或減小目標文件inode的引用計數; 



語法:ls -s filename linkfilename


    blob.png



file命令

該命令能夠用來識別文件類型,肯定文件內容

它能夠檢查文件類型,而後肯定適當的開發命令或應用程序使用


語法:  file [OPTION...] [FILE...]

    

參數:

  • -b列出文件辨識結果時,不顯示文件名稱。 

  • -c詳細顯示指令執行過程,便於排錯或分析程序執行形 

  • -f列出文件中文件名的文件類型 

  • -F使用指定分隔符號替換輸出文件名後默認的」:」分隔符 

  • -i輸出mime類型的字符串 

  • -L查看對應軟連接對應文件的文件類型 

  • -z嘗試去解讀壓縮文件的內容 

  • --help顯示命令在線幫助

    

查看文件類型:

blob.png


blob.png

相關文章
相關標籤/搜索