自分が持っているあるサイトにトラブルが起きた。
トラブルが起きたのは3日前。
「起業支援ネット 勝手会員サイト」というSNSサイトや自分のプログラム
をおいているところが一切書き込みができなくなった。
そんな類のエラーが起きた。
最初は何事かわからなかった。
ファイルが書き込めないというので、ディレクトリか何かの権限で撥ねられ
ているのかなと思った。それで権限を修正。うーん、状況は変わらない。
いろいろ見ていくと、サイトの容量が2GBを超えている。
このサイトは2GBまでのファイルでいくらという料金になっている。
しかしファイルの総容量は600MB。
以前に動画ファイルを載せた。今は消したけれども、そのファイルの記録が
悪さをしているのではと思った。
自分で不要なファイルを消して、サイトへ問い合わせてみた。
「数Kバイトの小さなファイルがたくさんあって、総量数は少なくても全体
としては大きくなる。」という返事をいただいた。
当たり前のことなんだけれど、そんなに差が出るものかな。
自分でもどこに小さなファイルがあるか一覧を見てみた。
ファイルの総数は3万以上。1つのファイルが1Mバイトあったら、30Gバイト
になるよね。100Kバイトでも、3Gバイト。
1つのファイルがたとえ1バイトしかなくても、システムの制限で、ディス
クとして512バイト、1Kバイトを占めることがある。
そうか、ファイルの総数が多すぎて、それで容量を占めてしまったんだ。
あるディレクトリ以下のファイルの一覧とそのサイズを計算する、プログラ
ムを作ってみた。あるディレクトリより下の、全てのファイルの一覧を表示
して、そのファイル容量を計算する。
size = size % MINIMUMSIZE * MINIMUMSIZE
この式は、ファイルが512バイトごとで区切られてるところだ。
MINIMUMSIZE = 1, 512, 1024と変えて計算する。確かにこの値を変えたら、
それぞれのファイルのサイズと全体の容量が変わっていくんだけれ
ど、、、、、、、、あれあまり増えないや。
やっぱりプロバイダーの計算が間違っているかなぁ・・・・
みなさん、ご面倒をおかけしました。 _(_ _)_
——————————-
#!/usr/local/bin/ruby
MINIMUMSIZE = 512
HOMEDIR = "/home/solis"
total = 0
Dir::glob("#{HOMEDIR}/**/*.*").each {|f|
size = File::stat(f).size
size = size / MINIMUMSIZE * MINIMUMSIZE
size = (size / MINIMUMSIZE + 1) * MINIMUMSIZE
puts "#{f}: #{size} bytes"
total = total + size
}
puts "Total #{total} bytes"
———————————