1. 程式人生 > >du -sh * 與 ls -lh 顯示文件大小不一樣

du -sh * 與 ls -lh 顯示文件大小不一樣

du df ls -lh du -sh df -Th

du -sh * 與 ls -lh 顯示文件大小不一樣

如下所示

[www@esjob-02 crm]$ du -sh aaa.txt

75M aaa.txt

[www@esjob-02 crm]$ ls -s aaa.txt

122480 aaa.txt

[www@esjob-02 crm]$ ls -lh aaa.txt

-rw-rw-r-- 1 www www 32G Mar 23 16:52 aaa.txt

[www@esjob-02 crm]$ du -sh --apparent-size aaa.txt

32G aaa.txt


這是什麽情況呢?


du=disk usage,它指這個文件放到磁盤中占了多少空間,du是計算文件占了多少個block。

似乎du結果總應該大於等於文件內容的,也就是du結果總大於等於ll的,但也不盡然。上面

的例子就是典型的 du 結果小於 ls


linux中有一種文件叫做sparse file,它可以延遲分配磁盤空間,特別適合虛擬機。比方說你

為虛擬機分配了1G的虛擬磁盤空間,也就創建了一個1G的磁盤文件,但是如果你還沒有打開虛

擬機使用這個文件,它實際上是沒有任何內容的,也就是說沒有產生磁盤占用。這個時候,ls

結果將是1G,而du結果是0。


du有一個參數是 --apparent-size,效果與ll相同。


du:統計每個文件占用磁盤空間的大小。

ls -s:顯示每個文件分配的磁盤空間的大小,以block為單位。

ls -l:顯示文件的實際大小。

參考鏈接:https://www.zybuluo.com/yiltoncent/note/242878


du -sh * 與 ls -lh 顯示文件大小不一樣