代码之家  ›  专栏  ›  技术社区  ›  Brendon Muir

计算每个客户的磁盘使用率的最快方法是什么?

  •  1
  • Brendon Muir  · 技术社区  · 14 年前

    我希望这是一个简单的。

    我运行一个Rails Web应用程序,在那里我托管大约100个学校网站。一个应用程序处理所有的网站,我有一个管理界面,我们可以添加和删除学校等…

    我想在这个接口中添加一个stat,它是该学校使用的总磁盘空间。每个学校文件都存储在一个单独的目录结构中,因此很容易找到。唯一的问题是我需要快点。所以问题是,找到这些信息的最快方法是什么。如果能通过即时的Ruby调用找到它,那就太好了,但我愿意接受任何有用的东西。理想情况下,我希望避免缓存和后台生成这些数据(至少在Rails级别)。:)

    3 回复  |  直到 10 年前
        1
  •  3
  •   aNoble    14 年前

    如果你想使用纯红宝石,你可以试试这段代码。不过,如果你想找速度,我肯定 du 会更快。

    def dir_size(dir_path)
      require 'find'
      size = 0
      Find.find(dir_path) { |f| size += File.size(f) if File.file?(f) }
      size
    end
    
    dir_size('/tmp/')
    
        2
  •  4
  •   spyle    11 年前
    `du -s "/your/path/here"`.split("\t").first.to_i #returns bytes
    
        3
  •  0
  •   Paul Rubel    14 年前

    你试过按需在每个目录上运行du吗?在我的老化箱上,我可以在15米的目录上用大约4毫秒做一个du,在大约50毫秒做一个250米的du。这两种方法对于手头的任务似乎都是合理的。目录有多大?在你尝试真正优化这个之前,确保它确实值得你花一段时间。雅格尼和所有这些。

    当他们向您提供文件时,您可以随时跟踪上传情况。这样,您只需要在添加或删除文件时跟踪增量。