du 报告目录大小远小于其内容的总和

du 报告目录大小远小于其内容的总和

我有一个目录~/D,我想查找其大小。使用du -c ~/D/*给出26880.但是,如果我运行ls -l ~/D,那么我可以清楚地看到各个文件加起来远远超过26880.事实上,如果我检查单个文件,du也会出错。输出的最后一行du ~/D/*给出

256 /home/me/D/lastFile.bin

而最后一行ls -l ~/D

-rw-r--r-- 1 me myGroup 3124 Aug 24 21:58 lastFile.bin

其中256显然不等于3124.是什么赋予了?这些是二进制文件有关系吗?

编辑:du这不是关于和之间差异的问题的重复dfdf在这种情况下似乎无法为我提供任何东西

编辑: stat -c %s ~/D/lastFile.bin与输出一致ls -l

答案1

来自手册页:

   Display values are in units of the first available SIZE from
   --block-size, and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE
   environment variables.  Otherwise, units default to 1024 bytes (or
   512 if POSIXLY_CORRECT is set).

因此,256 kB(或 128 kB,如果您碰巧是 POSIXly 正确的)为几个 3124 字节的文件提供了足够的空间。

使用 GNU du,您可以使用该-B选项设置输出的单位大小,使用-B1-b(等于-B1 --apparent-size)来获取以字节为单位的大小,这是ls默认打印的大小。

您实际上可能看到的不匹配可能是文件系统簿记的怪癖,至少主要是文件是在完整块中分配的事实。例如,在ext4文件系统上,100000-byte 文件实际上占用102400字节,因为它是按4096字节块分配的。这就是du我的系统上显示的内容。

--apparent-size仅计算du文件的数据大小,而不是开销。

相关内容