获取和更新磁盘空间使用的快速方法?

时间:2012-07-27 17:52:01

标签: python unix diskspace

我需要监控网络磁盘空间使用情况,并生成每个用户的报告列表目录及其大小 有些目录包含1000多个文件,每个文件大20mb 速度是关键,因为报告需要经常更新。

我的Python脚本遍历给定目录并将每个目录和文件信息存储到列表字典中 字典的后处理很快。 I / O是瓶颈。使用当前脚本,35TB目录需要大约5-6个小时才能扫描。

我尝试过简单的 os.walk & stat ,suprocessing du find -type f -printf

os.walk和du

他们都深入到底部并统计每个目录,文件。虽然这是初始运行所必需的,但后续更新会从不必要地统计未修改的目录和文件中获取命中。我无法设置最大深度,因为我需要知道子目录中有什么变化,如果有任何改变的话。

find -type f

这将仅查找文件。与上面的差别不大。至少这不是stat目录(目录信息是从驻留文件中收集的)。速度没有明显改善。

我原本希望使用目录的修改时间来检查内部是否有更改。如果是这样,请潜入,否则跳过。但 mtime 仅更新目录中已创建,已删除,重命名的项目。

除了这个强制通过所有目录和文件之外没有其他方法吗?

Directory layout:
group_002/
    bob/
        fubar/
        etc/
    dave/
    jim/

1 个答案:

答案 0 :(得分:0)

不确定这是否会更快,但您可以尝试生成用户目录列表,然后通过this recipe on disk usage运行它们。