Linux

以兆字節顯示文件夾使用情況的正確方法是什麼

  • August 20, 2018

du -bs用來計算文件夾大小。

du -bs /folder

結果是96342835 in Bytes… 所以 MB 是 (/1024/1024) 91,87MB

好的,但是當我使用

du -hs /folder

結果不一樣。99MB

du -s taxikondrat.cz/

100980 KB = 98,61MB

我嘗試了不同的方法。在每一個我得到不同的結果。例如

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'

我得到了 96059200 字節,所以91,60MB

ls -ARgo "$@" | awk '{q += $3} END {print q}'

96338739 字節,所以**91,87 MB。**舍入後是相同的,但以字節為單位略有不同。

蛋糕上的櫻桃是Google:) 在此處輸入圖像描述

那麼,什麼是真的?為什麼會出現這種差異,最準確的計數方法是什麼?

你在比較蘋果和橘子。

請注意,這ls -s將根據文件中實際數據的長度給出文件的大小。

預設情況下,該du命令將給出基於大小的磁碟使用情況。由於磁碟空間是按塊分配的,並且文件的長度幾乎不是塊大小的整數倍,因此您最終會得到一個僅部分填充數據但不能被另一個文件使用的塊。

換句話說,如果您的文件系統的塊大小為 512 字節,則 1 字節長度的文件將佔用磁碟上的 512 字節,與 511 字節的文件相同。一個 513 字節的文件將佔用 2 個塊和 1024 字節的磁碟空間。

du file磁碟使用量幾乎總是大於ls -s file文件大小的總和,尤其是當您有許多(小)文件和/或非常大的塊大小時。

使用du -b開關不會計算塊,但行為類似於ls -s

-b 相當於 列印外觀尺寸,而不是磁碟使用量;儘管表觀尺寸通常較小,但由於(“稀疏”)文件中的漏洞、內部碎片、間接塊以及類似

人類可讀格式的列印尺寸(例如,1K 234M 2G) ,它可能會更大--apparent-size --block-size=1

--apparent-size
-h, --human-readable

du -sh將塊的總數轉換為人類可讀的格式,

du -bh將以人類可讀的格式列印表觀大小的總和。

在我的 Maildir 中,有許多不同的小文件:

$ du -bs cur/
84088436    cur/
$ du -s cur/
91800   cur/
$ du -sh cur/
90M cur/
$ du -bh cur/
81M cur/

編輯關於轉換為人類可讀的輸出和兆字節,請不要忽視人類可讀的 SI 十進制前綴與二進制倍數、1000 的冪與 1024 的冪的整個*“爭議” 。*

有關此頁面的背景資訊,請參見:httpsls ://www.gnu.org/software/coreutils/manual/html_node/Block-size.html ,了解 GNU 實用程序如何du顯示它們。

M輸出中的資本du -h代表 1,048,576 字節。

引用自:https://serverfault.com/questions/927175