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

我希望这是一个简单的。

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

我想在此界面添加一个stat,这是该学校使用的总磁盘空间。 每个学校文件都存储在一个单独的目录结构中,因此很容易找到。 唯一的问题是我需要快速。 所以问题是找到这些信息的最快方法是什么。 如果可以通过即时的ruby电话找到它会很棒,但我愿意接受任何可行的工作。 理想情况下,我希望避免必须缓存和后台生成此数据(至少在磁盘级别)。 🙂

如果你想使用纯Ruby,你可以试试这段代码。 虽然如果你正在寻找速度,我相信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/') 
 `du -s "/your/path/here"`.split("\t").first.to_i #returns bytes 

您是否尝试过按需在每个目录上运行du? 在我老化的盒子上,我可以在约4毫秒的15M目录上进行du,在~50ms内进行250M。 这些对于手头的任务来说似乎都是合理的。 目录有多大? 在您尝试真正优化之前,请确保它确实值得你花时间。 YAGNI等等。

当他们为您提供文件时,您始终可以跟踪上传。 这样,您只需在添加或删除文件时跟踪增量。