Linux下du -sh 和 ls -lh顯示磁盤占用不一樣
簡介
在Linux下查看文件大小可以用ls -lh,也可以使用du -sh *。
但是有時候,命令返回的文件大小不一樣,這是為什么呢?
原因
du -sh *計算的是文件存儲到磁盤中占用了多少空間,計算的是占了多少個block。
ls -lh 計算的是文件的實際大小。
一般來說,存儲文件的時候很少剛好把block填滿,因此du -sh *一般都要比ls -lh大。
但是也有一些特殊文件,例如sparse file。
稀疏文件(Sparse File)
稀疏文件,這是UNIX類等文件系統的一個特性。稀疏文件與其他普通文件基本相同,區別在于文件中的部分數據是全0,且這部分數據不占用磁盤空間。
它可以延遲分配磁盤空間,特別適合虛擬機。比如分配了一個100G的文件做磁盤,在虛擬機里面識別到的就是100G的空間,但是,實際物理機只是分配至已經使用的空間。
總結
所以在清理空間的時候,使用du -sh *去查找大文件清理即可,如果遇到稀疏文件ls -lh就會誤判了。