我有一个包含很多KVM qcow2文件的文件夹,它们都是稀疏文件。现在我需要得到文件夹的总大小,qcow2文件大小应该算作表观大小(而不是实际大小)。
例如:
镜像:c9f38af104b4d338cc1bbdd640dca89.qco2文件格式: qcow2虚拟大小: 100G (107374182400字节)磁盘大小: 3.3M cluster_size: 65536
镜像应按100G处理,不应按3.3M处理
最初我使用statvfs(),但它只能返回文件夹的实际大小。然后,我切换到'du --外观大小‘,但它太慢了,因为我有10000+文件,它几乎需要5分钟来计算。
有没有人知道一个快速的方法,可以得到文件夹的大小,计算qcow2 2的虚拟大小?谢谢
发布于 2012-12-21 03:59:01
如果不对目录中的每个文件执行stat()操作,就无法找到这些信息。如果你在一个目录中有这么多的文件,速度会很慢。stat()需要检索每个文件的inode。
由于缓存的原因,添加更多内存可能会有所帮助。
发布于 2012-12-20 22:59:59
你可以使用类似这样的东西:
find images/ -name "*.qcow2" -exec qemu-img info {} \; | grep virtual | cut -d"(" -f2 | awk '{ SUM += $1} END { print SUM }'
发布于 2019-03-19 22:42:07
现代Unix*ish OSes提供了一种在一个步骤中检索目录中所有条目的统计信息的方法。这也需要查看所有inode,但可能可以在文件系统驱动程序本身中进行优化,因此可能会更快。
显然,您并不是在寻找一种使用C的系统调用来完成此任务的方法,所以我想一个可行的方法是使用Python。在那里,您可以使用模块os中的函数scandir()访问此功能。
https://stackoverflow.com/questions/13961607
复制相似问题