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

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

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

好文件

(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

坏文件

(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

答案1

du 永远不会显示单位。请注意在两种情况下输出中没有“B”(表示字节)——“人类可读”模式仅显示乘数前缀(K、M、G),但不显示单位本身。由于 1024 以下的数字没有前缀,因此不显示任何数字。

通常情况下,“du”以块为单位测量文件(请参阅手册页),但使用“-h”选项时,单位始终为 1 字节。因此,当du -h显示时512,即为 512 字节。

为什么是 512 而不是 0?请参阅 phuclv 的回答

答案2

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

  • 稀疏文件磁盘上只会存储非零块。因此,如果一个 50TB 的稀疏文件只有 5MB 非零数据,则只会占用约 5MB 的磁盘空间
  • 内联文件数据区中也会占用 0 字节,因为它们直接存储在元数据中。在 NTFS 中,它被称为常驻文件后来还有许多其他 Linux 文件系统,如 ext4 或文件系统也支持类似的功能
  • 压缩文件压缩后块数也会减少

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

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

--apparent-size

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

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

相关内容