首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得文件夹的大小,包括稀疏文件的表观大小?(du太慢了)

如何获得文件夹的大小,包括稀疏文件的表观大小?(du太慢了)
EN

Stack Overflow用户
提问于 2012-12-20 05:35:11
回答 3查看 2.3K关注 0票数 4

我有一个包含很多KVM qcow2文件的文件夹,它们都是稀疏文件。现在我需要得到文件夹的总大小,qcow2文件大小应该算作表观大小(而不是实际大小)。

例如:

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

镜像应按100G处理,不应按3.3M处理

最初我使用statvfs(),但它只能返回文件夹的实际大小。然后,我切换到'du --外观大小‘,但它太慢了,因为我有10000+文件,它几乎需要5分钟来计算。

有没有人知道一个快速的方法,可以得到文件夹的大小,计算qcow2 2的虚拟大小?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-21 03:59:01

如果不对目录中的每个文件执行stat()操作,就无法找到这些信息。如果你在一个目录中有这么多的文件,速度会很慢。stat()需要检索每个文件的inode。

由于缓存的原因,添加更多内存可能会有所帮助。

票数 3
EN

Stack Overflow用户

发布于 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 }'

票数 0
EN

Stack Overflow用户

发布于 2019-03-19 22:42:07

现代Unix*ish OSes提供了一种在一个步骤中检索目录中所有条目的统计信息的方法。这也需要查看所有inode,但可能可以在文件系统驱动程序本身中进行优化,因此可能会更快。

显然,您并不是在寻找一种使用C的系统调用来完成此任务的方法,所以我想一个可行的方法是使用Python。在那里,您可以使用模块os中的函数scandir()访问此功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13961607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档