我希望这是一个简单的。
我运行了一个Rails网络应用程序,我在那里托管了大约100个学校网站。一个应用程序处理所有网站,我有一个管理界面,我们可以添加和删除学校等...
我想在此界面添加一个stat,这是该学校使用的总磁盘空间。每个学校文件都存储在一个单独的目录结构中,以便于查找。唯一的问题是我需要快速。所以问题是找到这些信息的最快方法是什么。如果可以通过即时的红宝石电话找到它会很棒,但我愿意接受任何可行的工作。理想情况下,我希望避免必须缓存和后台生成此数据(至少在rails级别)。 :)
答案 0 :(得分:4)
`du -s "/your/path/here"`.split("\t").first.to_i #returns bytes
答案 1 :(得分:3)
如果您想使用纯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/')
答案 2 :(得分:0)
您是否尝试过按需在每个目录上运行du?在我老化的盒子里,我可以在约4毫秒的15M目录上进行du,在~50ms内进行250M。这些对于手头的任务来说似乎都是合理的。目录有多大?在您尝试真正优化之前,请确保它真的值得你花时间。 YAGNI等等。
当他们为您提供文件时,您始终可以跟踪上传内容。这样,您只需在添加或删除文件时跟踪增量。