为什么 Finder 和 du 报告的文件大小不同?

为什么 Finder 和 du 报告的文件大小不同?

我正在写极客工具 3脚本显示特定 VMware Fusion 虚拟机的大小。此类.vmwarevm“文件”实际上是一个打包的目录。

获取信息Finder 显示文件大小为“52.91 GB”。我运行以下du命令来获取文件大小:

> du -hs ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

du -hs命令返回文件大小为“49G”。这与 Finder 报告的差异是什么原因造成的?

或者,我尝试-s-d如下选项替换该选项:

du -hd ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

此命令返回文件大小为“59G”。Finder 、和du -hd之间的差异是什么?du -hddu -hs

此外,此du -hd命令在 geektool 3 中没有产生任何输出。为什么?

答案1

虽然我不是 Mac OS X 用户,但是我从某处读到 Finder 现在使用十进制。

区别在于 du 仍然使用 2 进制吗?

49.0 GiB * (1024^3 bytes / GB) = 52,613,349,376 bytes = 52.6 GB

(细微的差别是因为du四舍五入到最接近的 GB)

答案2

还请注意,“du”返回的是实际使用的磁盘空间,而其他工具将返回已分配的空间。如果您有稀疏文件,这两个值可能会有很大差异 - 我有一个文件分配了 2 TB 的空间,但它只占用了大约 200 MB 的磁盘空间。

答案3

Nifle 是正确的。 du返回以 2 为基数,Finder 返回以 10 为基数,49GiB ≈ 52.91GB

-d 参数要求您指定深度。从刚才的实验来看,如果您为深度提供除数字之外的其他内容,它会吃掉您指定的参数,并且表现得像您这样做了一样-d 0。您获得的 59G 是当前目录的大小,而不是 vmwarevm 文件的大小。

以下是我进行的实验:

[~]$ ls -d Code
Code/

[~]$ du -h -s Code
8.3M    Code

[~]$ du -h -d 0 Code
8.3M    Code

[~]$ du -h -d Code
 38G    .           <-- this is the size of ~/

[~]$ du -h -d 0
 38G    .

你可能想读Mac OS X du(1) 手册页了解更多信息。

相关内容