du(disk usage)是通過搜索文件來計算每個文件的大小然后累加,du能看到的文件只是一些當前存在的,沒有被刪除的。他計算的大小就是當前他認為存在的所有文件大小的累加和。
df(disk free)通過文件系統來快速獲取空間大小的信息,當我們刪除一個文件的時候,這個文件不是馬上就在文件系統當中消失了,而是暫時消失了,當所有程序都不用時,才會根據OS的規則釋放掉已經刪除的文件, df記錄的是通過文件系統獲取到的文件的大小,他比du強的地方就是能夠看到已經刪除的文件,而且計算大小的時候,把這一部分的空間也加上了,更精確了。當文件系統也確定刪除了該文件后,這時候du與df就一致了。
du和df不一致情況原因:
常見的df和du不一致情況就是文件刪除的問題。當一個文件被刪除后,在文件系統 目錄中已經不可見了,所以du就不會再統計它了。然而如果此時還有運行的進程持有這個已經被刪除了的文件的句柄,那么這個文件就不會真正在磁盤中被刪除,分區超級塊中的信息也就不會更改。這樣df仍舊會統計這個被刪除了的文件。
實際上即使你/home什么都沒有,df命令依然會顯示占用了一部分空間的,文件系統的元數據占了部分空間。
df和du統計的數據是不同的:
打個比方,文件是需要放到文件櫃里的,就算只有一個文件,也要占用一個文件櫃。文件櫃占用的空間比文件要大。
df就是統計使用了多少個文件櫃。
du則統計實際有多少個文件。
這樣下來,df算的就大,du就小。
簡單地說,df命令是根據該卷的inode使用情況進行統計的,而du則是累加所有文件的字節數。一個文件就算只有1字節,也要佔用一個inode。
