我需要监视网络磁盘空间的使用情况,并生成每个用户的报表列表目录及其大小。
有包含超过1000个文件的目录,每一个20 big大。
速度是关键,因为报告需要经常更新。
我的Python脚本遍历给定的目录,并将每个dir和文件信息存储在列表字典中。
词典的后处理速度很快。I/O是瓶颈。使用当前脚本,35 to目录扫描大约需要5-6小时。
我已经尝试过普通的os.walk & stat,suprocessing,查找-type f -printf。
os.walk和du
他们都钻到底部,并统计每一个脏,文件。虽然这是第一次运行所必需的,但是后续的更新会从不必要的统计未修改的目录和文件中获得点击。我不能设定最大深度,因为我需要知道在潜艇中有什么变化,如果有任何变化。
寻找-type f
这将只查找文件。和上面没有太大的区别。至少这不能统计目录(目录信息是从驻留的文件中收集的)。速度没有明显的提高。
我曾希望使用目录的修改时间来检查内部是否有什么变化。如果是的话,就跳进去,否则就跳过去。但是,仅对目录中的已创建、删除和重命名的项进行更新。
那么,没有别的办法,只有这个野蛮人-强迫所有的脏和文件?
Directory layout:
group_002/
bob/
fubar/
etc/
dave/
jim/发布于 2012-07-27 18:13:39
不确定这是否会更快,但您可以尝试生成一个用户if列表,然后通过这个食谱是关于磁盘使用的。运行它们。
https://stackoverflow.com/questions/11693065
复制相似问题