du的输出错误?


12

我认为我的du命令感到困惑。

% du -shc DIR ...
...
6123941496      total

% du -shc DIR ...
...
6.1G    total

% du -sc --si DIR ...
...
6.6G    total

我尝试LANG=C在电子表格中给出并仔细检查结果。看起来-h已经使用1000(--si)的幂进行输出,而--si给出了错误的答案。我认为正确的答案应该是-h为5.7G,--si为6.1G。那么这里发生了什么?

% du --version
du (GNU coreutils) 8.20
...

% uname -a
Linux XXX 3.9-1-amd64 #1 SMP Debian 3.9.8-1 x86_64 GNU/Linux

3
请包括实际命令。什么的...代表?您似乎两次运行了完全相同的命令,并获得了不同的输出,是吗?您是否已阅读中有关大小修饰符的说明man du
terdon

Answers:


18

使用--apparent-size开关重复测试。

$ du -shc --apparent-size DIR ...

杜曼页面节选

--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

1
嗯,因此-b显然等效于'--apparent-size --block-size = 1'。我错过了。现在正确使用'du -shc --apparent-size'可以得到5.7G了。谢谢!
Gerry Lufwansa 2013年

@GerryLufwansa-是的,当您开始在不同的文件系统中混合或挂载CIFS文件系统时,它会变得非常引人注目。我总是使用-b--apparent-size
slm

...而对于HSM系统,差异可能会变得非常大,因为迁移的文件报告为0(或类似几kB)而没有--apparent-size
Ansgar Esztermann

duMac OS X随附的任何解决方案?
亚历克·雅各布森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.