为什么“du”的不同单位参数会产生相互矛盾的结果?

为什么“du”的不同单位参数会产生相互矛盾的结果?

当我检查我的 Walkman 上使用的总空间量时,我得到了这个输出。

david@Milton:/media$ du -b --max-depth=0 WALKMAN/
14823290693 WALKMAN/
david@Milton:/media$ du -k --max-depth=0 WALKMAN/
14523776    WALKMAN/

我上次检查时,14,523,776 KB * 1024 = 14,872,646,624 B是 ,而不是14,823,290,693 B。将两者相除,它们的“K”单位似乎等于约,1020.62而不是1024广告中所说的。这导致我编写的用于同步 Walkman 的程序出现一些错误,因此它的填充速度比声称的要快。有人能解释一下这种差异吗?

答案1

du -b 在帮助文档(du --help)中描述为:

  -b, --bytes           equivalent to `--apparent-size --block-size=1'

在哪里

      --apparent-size   print apparent sizes, rather than disk usage; although
                      the apparent size is usually smaller, it may be
                      larger due to holes in (`sparse') files, internal
                      fragmentation, indirect blocks, and the like

相比之下,du -k 提供

  -k                    'like --block-size=1K'

也就是说,du -k 给出文件的磁盘使用情况,而 du -b 给出文件的“表观大小”。表观大小通常(但并非总是)较小。

(来源:coreutils 错误报告)。

相关内容