ディスクの内容を完全に消去する

最近,古くなったハードディスクを廃棄することにしました。大切なファイルも保存したこともある,随分と使ったディスクです。愛着もあるのですが,古くなって,速度も容量も不足に感じるようにもなり,そしてそろそろデータ破損の心配も出てきたので,思い切って廃棄することにしました。ディスクに残っていたデータを整理し,削除したり,他のディスクに移したりして,内容をすっかり空にしました。更にフォーマットをかけて,まっさらのディスクにしましたが,まだ完全にディスクの内容が消されたという確信は持てません。

実際,特別なツールを使うと,削除やフォーマットしたディスク内容が復元できるようなことも聞きます。これは,フォーマットやデータ消去が実体としてのデータの消去ではなく,それを紐付けしたインデックスの消去で,実体は残っていることのようです。ツールや,フォーマットオプションによって更に完全に消去するすることが可能なようですが,それらの処理が実際に何を行っているのか明確でないと,本当に完全に消去されたのか不安が残ります。

そこで,このような場合私は,tbasicを使って完全にデータを消去しています。方法は全く簡単で,

「無意味なデータでディスクを満たし,そのうえでフォーマットする。」

ということです。無意味なデータとは例えば,0 のみからなるデータです。そして例えば100Mバイトのテキストファイルが1000個あれば100Gのディスクが満杯になります。このディスクをフォーマットしたものは,どのような解析を行っても0のみからなるデータが抽出されるだけで,何かの情報が盗まれることはありません。

無意味なデータでディスクを満たすことは次を組み合わせて可能です。
1.0のみからなる100Mのテキストファイルzero.txtを作成する。
2.zero.txtを1000個複製する。

1zero.txtの作成はtbasicでは次のプログラムで可能です。

 A$=""
 For i=1 To 1022
   A$=A$+"0"
 Next i
 Open "Zero.txt" For Output as #1
 For i=1 to 102400
    Print #1, A$
 Next i
 Close #1

2.zero.txtを1000個複製は次のプログラムで可能です

For i=1 To 1000
   ID$=Right$("0000"+Trim$(Str$(i)),4)
   Print ID$
   FileCopy "Zero.txt", "Zero"+ID$+".txt"
Next i

これらの処理は,消去しようとするディスク(例えばXドライブ)をカレントディレクトリにして実行します。それぞれのプログラムの先頭にそれぞれ,

ChDir "X:\"

を書きます。このようにしてプログラムを実行すれば,Xドライブに1001個のzeroのみからなる100Mのテキストファイルが作成されます。ディスクの容量に応じて,zero.txtの大きさや個数を調節すれば,数テラバイトのディスクも0で満たすことができます。

これらの処理の速度は主に,ディスクの書き込み速度に依存しますので,tbasic以外の言語で同様な処理を行っても速度は変わらないと思います。ですから,上のプログラムによる,ディスクデータ完全消去法は,実際に使って効果のある現実的なものです。実際,この方法は私がディスクを廃棄する際にいつも使っている方法です。このように,

tbasic の小さなプログラムで効果あるツールを作成することができます。