1

これが単純なものであることを願っています。

約100の学校のWebサイトをホストしているRailsWebアプリを実行しています。1つのアプリですべてのサイトを処理し、学校などを追加および削除できる管理インターフェイスがあります...

このインターフェイスに、その学校で使用されている合計ディスク容量である統計を追加したいと思います。各学校のファイルは個別のディレクトリ構造に保存されているため、簡単に見つけることができます。唯一の問題は、高速である必要があることです。したがって、問題は、この情報を見つけるための最速の方法は何かということです。その場でルビーの呼び出しを介してそれを見つけることができればそれは素晴らしいことですが、私はうまくいくものなら何でも開いています。理想的には、このデータをキャッシュしてバックグラウンドで生成する必要を避けたいと思います(少なくともレールレベルで)。:)

4

3 に答える 3

4
`du -s "/your/path/here"`.split("\t").first.to_i #returns bytes
于 2013-03-27T13:27:48.697 に答える
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/')
于 2010-09-03T00:05:04.083 に答える
0

オンデマンドで各ディレクトリでduを実行してみましたか?私のエージングボックスでは、15Mディレクトリで約4ミリ秒、250Mで約50ミリ秒でduを実行できます。これらは両方とも、目前のタスクにとって妥当なようです。ディレクトリの大きさはどれくらいですか?これを実際に最適化する前に、それが本当に価値があることを確認してください。YAGNIとそのすべて。

彼らがあなたにファイルを提供するとき、あなたはいつでもアップロードを追跡することができます。そうすれば、ファイルが追加または削除されたときにデルタを追跡する必要があります。

于 2010-09-02T23:53:56.150 に答える