普段ディスクのデータをクリアする時は、rmコマンドでファイルを削除したり、Windowsのファイルエクスプローラーからフォーマット、mkfsコマンドを使ってディスクをフォーマットしたりします。この作業はファイルシステムの初期化であり、ファイルが存在するというフラグがクリアされただけで、ディスクにある実際のデータは完全に削除されておらず、復旧ソフトなどを使えばデータを復旧させる事が出来ます。保存したデータを完全に削除して、読み込みを不可能にするには実際データが保存されているセクターをクリアするか、何かしらのデータを上書きする必要があります。
shredはランダムな値をディスクに書き込んでくれるコマンドです。このコマンドを使って消されたファイルやディスクは復旧ソフトを使っても復旧出来ないのでディスク、データを破棄する際に有効です。
shredコマンドは、Ubuntuにデフォルトでインストールされています。まずは、動作をみるために普通のテキストファイルhello.txtのデータを壊してみます。-v で実行結果の詳細を表示してくれます。実行するとデフォルで3回(-n オプションで回数指定可能)ランダムなデータを書き込んでくれます。-zを指定すると最後に0データを書き込んでくれます。
$ cat hello.txt
hello
$ shred -v hello.txt
shred: hello.txt: 経過 1/3 (random)...
shred: hello.txt: 経過 2/3 (random)...
shred: hello.txt: 経過 3/3 (random)...
$ cat hello.txt
G���g������Rw����z��G����Xd�U
:
$ shred -v -z hello.txt
shred: hello.txt: 経過 1/4 (random)...
shred: hello.txt: 経過 2/4 (random)...
shred: hello.txt: 経過 3/4 (random)...
shred: hello.txt: 経過 4/4 (000000)...
$ cat hello.txt <- 何も表示されない。
ファイルが破壊されたのを確認したので削除します。
$ rm hello.txt
USBメモリーのデータを削除する場合は、USBメモリーを刺した後に以下のコマンドを実行してUSBメモリーのデバイス名をチェックします。
$ sudo dmesg
:
[ 87.620225] scsi 3:0:0:0: Direct-Access ELECOM MF-HCBU2 1100 PQ: 0 ANSI: 4
[ 87.625431] sd 3:0:0:0: Attached scsi generic sg2 type 0
[ 87.637392] sd 3:0:0:0: [sdb] 30310400 512-byte logical blocks: (15.5 GB/14.5 GiB) <- /dev/sdb と分かる
:
以下のように実行すればUSBメモリーにランダムな値を5回書き込み、最後に0データを書き込んでくれます。
$ sudo shred -v -n 5 -z /dev/sdb
破棄予定のPCのHDDデータの消去には、UbuntuのLiveメディアがお勧めです。デフォルトでshredコマンドが入っているので、破棄予定のPCでUbuntu Live を起動してUSBメモリーのデータ消去と同じ要領でコマンドを実行すれば良いのです。