linux – 如何获取文件夹的大小,包括稀疏文件的表观大小? (杜太慢了)

我有一个包含大量KVM qcow2文件的文件夹,它们都是稀疏文件.
现在我需要获取文件夹的总大小,qcow2文件大小应该算作表观大小(不是实际大小).

例如:

图像:c9f38caf104b4d338cc1bbdd640dca89.qcow2
文件格式:qcow2
虚拟大小:100G(107374182400字节)
磁盘大小:3.3M
cluster_size:65536

图像应视为100G但不是3.3M

最初我使用statvfs()但它只能返回文件夹的实际大小.然后我切换到’du –apparent-size’,但是由于我有10000个文件而且它需要将近5分钟来计算,所以它太慢了.

任何人都知道一个快速的方法,可以获得计算qcow2的虚拟大小的文件夹的大小?谢谢

解决方法:

如果没有stat()目录中的每个文件,就无法找到此信息.如果在单个目录中包含这么多文件,则速度很慢. stat()需要检索每个文件的inode.

由于缓存,添加更多内存可能会有所帮助.

上一篇:linux 目录管理_2


下一篇:Linux常用的一些命令