ファイル・ディスクの中身を完全消去

完全消去の方法ですから、実行した後は後戻りできないことが多々あります。 実行は自己責任でお願いします。

shredコマンド

rm しただけではファイルの内容を完全には消せません。 Ubuntu には shred コマンドがあるので、これで完全消去します。 ファイル単位で完全消去するには引数としてファイル名を与え、 ディスク単位で完全消去するには引数としてデバイス名を与えます。 よく使うオプションは以下の通りです。

-u shred 終了後、ファイルを消す
-v 進捗状況を表示する
-n (回数) ランダム情報を書き込む回数を指定する(デフォルトは3)
-z 最後に0を書き込む

以下は例です。

ファイルを完全消去する場合

消したいファイルの名前を hogehoge.txt とします。 このときは、

shred -u hogehoge.txt

とします。適当にオプションを付けてもOKです。

ディレクトリの中身を完全消去する場合

ディレクトリ hoge/ とその下のすべてのディレクトリに含まれる ファイルを消すには、find と xargs を組み合わせます。

find hoge -type f | xargs shred -u -v -z -n (回数)

xargs は、標準入力から入力された文字列を引数として実行します。 今の場合は、"find ..." で生成された文字列を、 "shred ..." の引数として渡すことでサブディレクトリ以下のファイルを含めて shred させます。

シンボリックリンクは shred では消せないようなので、 rm コマンドに引き渡します。

find hoge -type l | xargs rm

残ったディレクトリは、中身ごと再帰的に消します。

rm -r hoge

ディスク内容を完全消去する場合

まず、認識しているディスクを確認します。

% sudo fdisk -l

内容を完全消去したいディスクのデバイス名を確認します。 これは非常に大事なステップで、決して間違ってはいけません。 消したいディスクのデバイス名を /dev/sdb としましょう。 例えば、次のようにします。

% sudo shred -v -n 3 -z /dev/sdb

すると、進捗状況が示されつつ、 ディスク全体の完全消去が行われます。

dd コマンドを使っても、同様のことができます。 (sudo がいるかどうかは未確認)

% dd if=/dev/urandom of=/dev/sdb
% dd if=/dev/urandom of=/dev/sdb
% dd if=/dev/urandom of=/dev/sdb
% dd if=/dev/zero of=/dev/sdb

ディスクの空き領域を完全消去する

先の方法はディスク全体の完全消去法でしたが、 空き領域だけを完全消去したいときもあります。 そういうコマンドはないので、合わせ技で実行します。 ただし、この方法をルートファイルシステムに実行してはいけなくて、 最悪の場合はシステムが起動しなくなるそうです。 実行は自己責任でお願いします。

以下では、/hoge 以下の空き領域を完全消去することにします。

  1. 空き領域の容量を調べる
    % df -k /hoge
    Filesystem 1K-ブロック  使用  使用可  使用%  マウント位置
    ..................................................

    使用可のところの数字を憶えておきます。

  2. 空き領域の容量と同じサイズのファイルを作成する
    % dd if=/dev/zero of=/hoge/foo bs=1k count=(上で調べた使用可の所の数字)

  3. 先に作成したファイルを完全消去する
    % shred -v -n 3 -z -u /hoge/foo
    -v は進捗状況を見るためのオプション。
    shred はデフォルトでは25回上書きをするが、 多すぎるときは -n オプションで回数を指定する。 上の場合は、3回上書きする。
    -z は最後に0を書き込むことでshredしたことを隠すためのオプション。
    -u は最後にファイルを消去するためのオプション。

DVD-RAMの中身を完全消去する

空き領域だけ、ではなく、ディスク全体を 完全消去する方法です。 これで良いのかよくわかっていませんが、一つの方法としてメモしておきます。
  1. DVDドライブのデバイス名を確認する
    dmesg で見るとか、palimpsest で見るとか、何とかしてみます。 以下の例では /dev/dvd としますが、これが正しい名前とは限りませんので、 十分気をつけてください。

  2. フォーマットする
    これをすると、とりあえず DVD-RAM 内のデータは読めなくなると思います。 しかしまだ、完全消去はされていません。
    dvd+rw-format -force /dev/dvd
    dvd+rw-format -blank /dev/dvd

  3. 完全消去する
    shred -v -z -n 3 /dev/dvd


Last modified: Mon Jul 28 11:57:27 JST 2014