【问题标题】:Fast way to get and update disk space usage?获取和更新磁盘空间使用情况的快速方法?
【发布时间】:2012-07-26 10:37:19
【问题描述】:

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

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

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

os.walk 和 du

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

find -type f

这将只查找文件。和上面没有太大区别。至少这不会统计目录(目录信息是从驻留文件中收集的)。速度没有明显改善。

我曾希望使用目录的修改时间来检查内部是否发生了某些变化。如果是这样,请潜入,否则跳过。但 mtime 只更新目录中已创建、已删除、重命名的项目。

那么除了这种暴力破解所有目录和文件之外,没有其他方法了吗?

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

【问题讨论】:

  • 你在哪个平台上?特定于平台的解决方案可以吗?
  • 你可以试试跨平台的psutil
  • @SvenMarnach 当然,我不是在寻找灵丹妙药。在centos5.3上
  • 你听说过quotas吗?如果您在文件系统上启用配额,它会为您跟踪每个用户的磁盘使用情况,并随时通过repquota 即时提供报告。
  • 您可以启用配额来跟踪使用情况,但仍不设置每个人的限制。

标签: python unix diskspace


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 2019-12-12
    • 2021-10-07
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多