这似乎完全是倒退。(此 NFS 共享上的块大小为 512KiB,造成 20% 的浪费,但这是另一个问题。)
$ df -BM --output=used,target /Database/backups
Used Mounted on
3842164M /Database/backups
$ du -cd0 -BM --apparent-size /Database/backups
3841946M /Database/backups
3841946M total
$ du -cd0 -BM /Database/backups
4631230M /Database/backups
4631230M total
右侧手册页的
du
简短描述中说,它会估算文件空间使用量。有许多文件系统特性可能会导致其输出不准确。对于稀疏文件,块大小总是小于表观大小,而表观大小会严重高估存储大小。
对于几乎所有其他情况,表观大小不会考虑文件和元数据块的块粒度存储,因此会低估文件的存储大小。
我能想到的唯一会导致 du 高估块数量的事情是特定于底层存储文件系统的,包括:
这两种情况都会导致 du 高估所使用的块的数量,但只有前者不会增加表观尺寸。
因此,如果 du 的表观大小比 du 的块大小更接近 df 输出,则可能是底层文件系统正在执行块打包,使得块计数对于大小估计毫无用处。了解哪个文件系统(
df -T
在服务器上)将有助于确定这种情况是否可能。另一种可能性是,如果 du 的块估计是基于比实际使用的块(例如 512b)更大的块(例如 8k),但这似乎不太可能,因为这是文件系统可以正确报告的内容。