为何du-sh与文件管理器不一致?

为何du-sh与文件管理器不一致?

我想知道为什么我执行时得到的目录大小du -sh与文件管理器显示的目录大小不一致。它们有什么不同?我的数据到底有多大?我对它在磁盘上占用的大小不太感兴趣(因为块和其他东西),我只想知道实际数据有多大。

答案1

简短回答:文件管理器以 1000 为单位进行计算,du默认以 1024 为单位进行计算。因此,文件管理器将 1024 字节的文件视为“1.024 kB”,而将du其视为“1.000 kiB”。如果您考虑更大的文件,例如兆字节 (1000 * 1000) 与兆字节 (1024 * 1024) 或千兆字节 (1000 * 1000 * 1000) 与吉字节 (1024 * 1024 * 1024),则此值(字面上)会成倍增加。

长答案:差异源于计算机和人类不同的计数方式。大多数当今人类社会都使用十进制系统进行计算,以 10 为基数。历史上并非所有文化都这样做,这就是为什么我们将一天分为24小时。但对于大多数事物,我们使用 10,或 10 的倍数,或 10 的 n 次方。这在国际单位制(国际单位制)使用前缀来标记 10 ^ 3 = 1000。1000 克等于 1 千克,1 米的千分之一等于 1 毫米,等等。从技术上讲,1000 千克等于 1“兆克”,但传统上我们使用不同的词来表示它,即“吨”。不过,它还是以 1000 为基础的。

另一方面,计算机不是基于 10 进行计算,而是基于 2 - 开/关、通电/断电、真/假。因此,计算机使用 2 的倍数和幂而不是 10 的倍数:2、4、8、16、32、64 等等。最接近 1000 的 2 的幂是 1024。因此,“1 千字节”最初不是像大多数其他单位那样定义为“1000 字节”,而是“1024 字节”。同样,“1 兆字节”最初是“1024 * 1024 字节”,“1 千兆字节”最初是“1024 * 1024 * 1024 字节”,等等。

“当时”,大多数使用计算机的人都知道这一点,而且按照当时使用的计量单位,这并没有太大的区别。在大多数情况下,一个文件是 1000 字节“大”还是 1024 字节“大”,其实并不重要。但随着时间的推移,计算机变得无处不在,数字也变得越来越大。今天,许多计算机用户不知道 1000 和 1024 的区别,或者他们不在乎。向“Joe Everbody”解释“几乎所有东西的‘千克’都意味着‘1000 千克’”,这没有多大意义,但对于计算机来说,情况就不同了。此外,差异开始变得显著。如果将基于 1000 的“千兆字节”与基于 1024 的“千兆字节”进行比较,差异大约为 10%。对于“太字节”或更大的字节,差异甚至更大。

因此,过去几年来,许多国家决定区分这两种计算系统。如今,经典的前缀“千”、“兆”、“吉”、“太”等几乎总是以 1000 为单位使用。因此,一个 1024 字节的文件将不再是“1.000 千字节”,而是“1.024 千字节”。以 1024 为基础的单位有了新的前缀,“旧单位”的第一个音节后面跟着“bi”:Kilo -> kibi,mega -> mibi,tera -> tebi 等等。符号为 KiB、MiB、TiB 等等。

Nautilus 是 Ubuntu 的文件管理器,以 1000 为单位进行计算。因此,它以千字节、兆字节等为单位显示文件大小。du另一方面,它仍然以 1024 为单位进行计算。因此,du您可以看到以千比字节、兆比字节等为单位的文件大小。如上所述,一旦我们处于太字节与太字节范围及以上,它就会开始显示 ;)

du提供--si开关。它的工作原理类似于-h,但使用 SI 单位计算,而不是基于 1024。因此

du --si -s my_files/

会给出以 KB、MB、GB 等为单位的大小,而

du -sh my_files/

将为您提供 KiB、MiB、GiB 等单位的大小。

答案2

找出正确磁盘空间使用情况的正确方法是使用du命令 ( du -sh)。这是因为您的文件管理器(如 Nautilus)不考虑隐藏文件。

或者您可以使用磁盘使用情况分析器. 使用以下命令从终端启动它:

baobab

磁盘使用情况分析器

也可以看看:如何查找 - 目录大小和可用磁盘空间

答案3

我猜你使用 Nautilus 作为文件管理器:隐藏文件不被考虑。这是自 2006 年以来已知错误

相关内容