4Gの壁とかあったな
ファイルサーバにおいてあるファイルがいつの間にやら「1」とか「2」とかいうファイルに分割されててなんじゃこりゃとか思ったんだけど、そういえばFAT32って4GBしかないのになんでこんなでっかいISOファイルここに置けたんだっけとむむむとなった。
以前、5,000円で買ったHDDをぶち込むだけでファイルサーバになる箱を使っていたんだけど、こいつがあまりにも酷い代物でファイル名が化けるは、ファイルは消えるはで散々だったので、ディスクを引っこ抜いて古いマシンを使って構築していたファイルサーバに移動して使っていたのでした。
なんかそのあたりでいろいろおかしな事になったんだろうなあ。詳しい原因がよく分からない。そういえばFAT32をNTFSに変換しようとして失敗したりもした気がする。早々に新しいHDDを買って整理しなおす必要があるなあ。
てなところで、いつの間に分割されていたファイルを直そうとするが手ごろなソフトも見つからないので、ちょちょいとスクリプト書いて結合する。
file = [] file[0] = ARGV.shift file[1] = ARGV.shift output = ARGV.shift BUF = 1024 * 1024 * 10 File.open(output, "w") do |out| out.binmode file.each do |input| print input File.open(input) do |infile| infile.binmode while(tmp = infile.read(BUF)) do print "*" out << tmp end print "\n" end end end
適当に作りすぎていまいち綺麗じゃないが予想以上に高速に動いてる。
ネットワーク越しのファイル扱うときってバッファはどんな感じで持てばいいかがようわからん。