ディスクをランダムデータで上書きする

ノートPCを買い取りに出そうと思ってXPを再インストール。パーティション選択のところでクイックじゃないほうのフォーマットを選んだが、念のためインストール後にファイル復元ツールで確認してみたところ、ばっちり全部残ってた。危ない危ない。

ファイルの完全削除ツールを探してみたがフリーでまともなのが見あたらない。ランダムデータで空き領域を何回か上書きしてくれさえすればいいんだが、それだけのためにお金を払う気になれない。ということで、作ってみた。

def random_write(file, bits)
  random_data = (Array.new(2 ** bits) {rand(256)}).pack("C*")
  begin
    File.open(file, 'w') do |w|
      w.write random_data while true
    end
  rescue
    puts $! #=> Bad file descriptor
    File.unlink file
  end
end

1.upto 3 do
  random_write('random_data', 24) # 2 ** 24 => 16M
end

幸いうちのノートは18Gしかディスクがないので、これで十分。明日あたり下取りにいこうかな。