我需要监控网络磁盘空间使用情况,并生成每个用户的报告列表目录及其大小
有些目录包含1000多个文件,每个文件大20mb
速度是关键,因为报告需要经常更新。
我的Python脚本遍历给定目录并将每个目录和文件信息存储到列表字典中 字典的后处理很快。 I / O是瓶颈。使用当前脚本,35TB目录需要大约5-6个小时才能扫描。
我尝试过简单的 os.walk & stat ,suprocessing du , find -type f -printf 。
他们都深入到底部并统计每个目录,文件。虽然这是初始运行所必需的,但后续更新会从不必要地统计未修改的目录和文件中获取命中。我无法设置最大深度,因为我需要知道子目录中有什么变化,如果有任何改变的话。
这将仅查找文件。与上面的差别不大。至少这不是stat目录(目录信息是从驻留文件中收集的)。速度没有明显改善。
我原本希望使用目录的修改时间来检查内部是否有更改。如果是这样,请潜入,否则跳过。但 mtime 仅更新目录中已创建,已删除,重命名的项目。
除了这个强制通过所有目录和文件之外没有其他方法吗?
Directory layout:
group_002/
bob/
fubar/
etc/
dave/
jim/