du -h 返回512,是什么意思?

Gud*_*ddu 3 du

我有一些du -h返回的文件512,我的理解它应该返回带有单位的数字。这是什么意思 ?实际使用的磁盘空间是多少?

好文件

(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0958
36K 2020.110/drr0/X1.0060_0958
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0958
-rw-rw-rw- 1 user11 users 36628 Jul 29 18:43 2020.110/drr0/X1.0060_0958
Run Code Online (Sandbox Code Playgroud)

坏文件

(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0957
512 2020.110/drr0/X1.0060_0957
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0957
-rw-rw-rw- 1 user11 users 0 Jul 29 18:51 2020.110/drr0/X1.0060_0957
Run Code Online (Sandbox Code Playgroud)

use*_*686 11

du 从不显示单位。请注意,在这两种情况下,输出中都没有“B”(表示字节)——“人类可读”模式只显示乘数前缀(K、M、G)而不是单位本身。由于 1024 以下的数字没有前缀,所以没有显示。

通常 'du' 以块为单位测量文件(参见手册页),但使用 '-h' 选项时,单位始终为 1 个字节。所以当du -h显示时512,那是 512 个字节。

为什么是 512 而不是 0?看 phuclv 的回答

  • @anonymous:“36KB”会有一个单位(字节),但“36K”没有——“kilo”本身不是一个单位。36K 只是 36 公斤*东西*。(或 36 开尔文,但这显然不适用于此处。) (4认同)

phu*_*clv 7

文件并不总是占用磁盘空间。数据块少于实际大小的文件将报告为较少的块数

  • 稀疏文件只会在磁盘上存储非零块。因此,只有 5MB 非零数据的 50TB 稀疏文件在磁盘上仅消耗约 5MB
  • 内联文件也将在数据区消耗 0 字节,因为它们直接存储在元数据本身中。在 NTFS 中,它被称为常驻文件,后来许多其他 Linux 文件系统如 ext4 或 Btrfs 也支持类似的功能
  • 压缩文件压缩后的块数也较少

可能您的文件已内联。由于它没有分配的块,报告的数量ls将为 0。您可以使用 轻松检查stat。在 ext4 中,只能内联与 inode 大小(256+ 字节)相比非常小的文件,因此您可能正在使用其他文件系统,例如 NTFS 或 Btrfs

您可以使用中的--apparent-size选项du查看实际尺寸

--apparent-size

打印表观大小,而不是磁盘使用情况;尽管表观大小通常较小,但由于(“稀疏”)文件中的漏洞、内部碎片、间接块等原因,它可能会更大

https://www.man7.org/linux/man-pages/man1/du.1.html