treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

Linuxのディスクを完全消去する方法

Windowsでディスクを完全消去する場合には、ユーティリティを使うのが定石となっていますが、Linuxのディスクを完全消去する方法ってあまり見かけない。
今日は、この辺をご報告。

いつもはCDからブートするWipe-Out<ハードディスク消去ツール「wipe-out」>というフリーウェアを使っていますが、今回はddコマンドを調べましたらば、それに代わるコマンドもあることを知りました。

blog.treedown.net

この時使いました。

ddコマンドでゼロクリア

HDDの中身をゼロクリアするということであれば、以前やったddコマンドの範囲を拡大し、実行すればOKという事になります。
※コマンドを試しに実行してしまうとディスクの中身は消去されてしまうので、消していい環境で試しましょう。

$ dd if=/dev/zero of=/dev/sdb1

ゼロクリアでイイのなら、ddコマンド使っておけばOK。

ddコマンドはファイルを変換しながら、指定したブロックサイズでデータのコピーを実行してくれます。
このコピーのコピー元指定をゼロと指定することで、「ゼロをコピーする=ゼロクリアでデバイス消去」という動作を実行しています。

ddコマンドオプション

ここで出てくるddコマンドに付与するオプションは二つ、たった二つ理解しておけばOKです。

「ファイル名」と記載の箇所は/dev/sdb□のようにデバイスの直接指定もできます。

if=ファイル名
読み込むファイル、つまりコピー元となる入力元。ここにバックアップ元となるデータが記憶されたデバイスを記述してバックアップを取得することになります。
これにzeroを指定することによって次のコピー先として指定するデバイスをゼロクリアしてしまう動作となります。

of=ファイル名
出力ファイルを指定します。ここをコピー先となるデバイス名とし同一状態のデバイスを作成したり、イメージバックアップするならフルパスでファイル名を記述することでファイルバックアップとしたりすることができます。

基本はこの二つが理解できていればddコマンドでバックアップを取得したり、デバイスを消去するためにゼロクリアしたり、することができます。

ランダム文字列を書き込む

しかし、ゼロクリアじゃだめだよ、という決まりが社内で取り決められているケースがあります。
この場合はどうしようか、となりますが、この場合にはshredコマンドを利用してランダム文字を複数回書き込み、上書きが繰り返された状態でもって、ディスクが完全消去されたという判断をすることができます。

そのコマンドはshredコマンドというらしいです。
例えば、

shred –n 2 –v /dev/sdb1

と指定すると、ゼロクリアより強力な消去となるランダム値書き込みを2回実行してくれます。
ランダム値をデバイスに書き込むと、データの復元はゼロクリアより一層困難になるため、より強力な消去を実行した、ということになります。

shredコマンドは使う時になったらもうちょっと詳しく調べてみよう、と思いました。