我正在使用du -bs来计算文件夹大小。
du -bs /folder
Run Code Online (Sandbox Code Playgroud)
结果是以字节为单位的96342835 ...所以以 MB 为单位是 (/1024/1024) 91,87MB。
好的,但是当我使用
du -hs /folder
Run Code Online (Sandbox Code Playgroud)
结果不一样。99MB 或
du -s taxikondrat.cz/
Run Code Online (Sandbox Code Playgroud)
100980 KB = 98,61MB
我尝试了不同的方法。每一次我都得到了不同的结果。例如
find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
Run Code Online (Sandbox Code Playgroud)
我有 96059200 字节,所以91,60MB
ls -ARgo "$@" | awk '{q += $3} END {print q}'
Run Code Online (Sandbox Code Playgroud)
96338739 字节,所以91,87 MB。舍入后相同,但以字节为单位略有不同。
那么,什么是真的?为什么会有这种差异,什么方法是最准确的计数?
HBr*_*ijn 11
你在比较苹果和橙子。
请注意,ls -s将根据文件中实际数据的长度给出文件的大小。
默认情况下,该du命令将给出基于大小的磁盘使用情况。由于磁盘空间是按块分配的,并且文件的长度几乎不是块大小的整数倍,因此您最终会得到一个仅部分填充数据但不能被另一个文件使用的块。
换句话说,如果您的文件系统的块大小为 512 字节,则 1 字节长度的文件将在磁盘上占用 512 字节,与 511 字节的文件相同。一个 513 字节的文件将占用 2 个块和 1024 字节的磁盘空间。
总du file磁盘使用量几乎总是大于ls -s file文件大小的总和,尤其是当您有很多(小)文件和/或非常大的块大小时。
使用du -bswitch 不会计算块,但行为如下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/
Run Code Online (Sandbox Code Playgroud)
编辑关于转换为人类可读的输出和兆字节,请不要忽视人类可读的 SI 十进制前缀与二进制倍数、1000 次幂与 1024 次幂的整个“争议”。
请参阅背景此页:https://www.gnu.org/software/coreutils/manual/html_node/Block-size.html在GNU如何实用程序,如ls和du显示。
资本M的du -h输出代表1,048,576字节。
| 归档时间: |
|
| 查看次数: |
5466 次 |
| 最近记录: |