du -sh * 與 ls -lh 顯示文件大小不一樣
阿新 • • 發佈:2018-03-23
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 顯示文件大小不一樣