为什么 Linux 命令 du 和 ls 的输出有区别?

为什么 Linux 命令 du 和 ls 的输出有区别?

我在 Linux 机器上有一个文件,执行“ls -l”后,其大小为 3404494030。当我执行“ls -lh”时,它显示 3.2 GB,从字节转换为 GB 是正确的。但是当我对同一个文件执行“du -h”时,它显示 4 GB。我尝试了很多次,但发现“ls”和“du”的输出不一致。我还尝试使用 filezilla 客户端(Windows 上的 ftp 客户端)通过右键单击文件并通过文件属性监视其大小来查看文件的大小。“ls”和 filezilla 的输出匹配。我使用的是 CentOS,我想知道这是“du”的一个错误还是我对“du”的理解有问题。之前有一个类似的问题。我检查了一下,发现这是一个微不足道的问题。

答案1

ls显示为文件分配的空间。

du显示文件实际使用的空间量。

答案2

稀疏文件:

$ dd if=/dev/zero of=sparse.img bs=1M seek=1024 count=0
$ ls -lh sparse.img
-rw-rw-r-- 1 ruiqi ruiqi 1.0G Nov 26 11:23 sparse.img
$ du sparse.img
0   sparse.img

相关内容