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