inode就是索引節點,它用來存放檔案及目錄的基本信息,包含時間、檔名、使用者及羣組等。node
inode 是 UNIX/Linux 操做系統中的一種數據結構,其本質是結構體數據結構
它包含了與文件系統中各個文件相關的一些重要信息ide
每個索引節點都是一個表項,包含有關文件的信息(元數據):spa
文件類型,權限,UID,GID 操作系統
連接數(指向這個文件名路徑名稱個數) 指針
該文件的大小和不一樣的時間戳 orm
指向磁盤上文件的數據塊指針 對象
有關文件的其餘數據索引
如圖:
開發
所以,在Linux中建立文件系統時,同時將會建立大量的inode一般,文件系統磁盤空間中大約百分之一空間分配給了inode表
文件引用的是一個inode號,所以,當用戶搜索或者訪問一個文件時,Linux系統經過 inode 表查找正確的 inode 編號。在找到 inode 編號以後,相關的命令才能夠訪問該 inode ,並對其進行適當的更改,因此,一個目錄是目錄下的文件名和文件inode號之間的映射,以下圖:
使用stat filename能夠查看
使用df -i 能夠查看分區的inode使用率
使用 ls -i filename能夠查看inode號
使用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
file命令
該命令能夠用來識別文件類型,肯定文件內容
它能夠檢查文件類型,而後肯定適當的開發命令或應用程序使用
語法: file [OPTION...] [FILE...]
參數:
-b列出文件辨識結果時,不顯示文件名稱。
-c詳細顯示指令執行過程,便於排錯或分析程序執行形
-f列出文件中文件名的文件類型
-F使用指定分隔符號替換輸出文件名後默認的」:」分隔符
-i輸出mime類型的字符串
-L查看對應軟連接對應文件的文件類型
-z嘗試去解讀壓縮文件的內容
--help顯示命令在線幫助
查看文件類型: