「Tiny Core Linux 7をUSBメモリにインストール」で作ったTiny Core Linuxでshredを使ったデータ消去です。
shredは最近のLinuxなら標準で入っている(と思う)削除専用コマンドです。ddで/dev/urandomを使うと遅いし、といって/dev/zeroでは不安という場合に使えると思います。
古いshredは/dev/urandomを使っていたようですが、今時のshredは/dev/urandomを使わないようですので速度面で期待できます。
shredのインストール
Tiny Core Linuxの場合は標準ではインストールされていないのでインストールします。shredはcoreutilsというパッケージに含まれます。
$ tce-load -wi coreutils
バージョンを確認してみると8.24と結構新しいようです。
$ shred --version
shred (GNU coreutils) 8.24
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Colin Plumb.
本当に速いの?
/dev/urandomと比較して本当に速いのか書き込んで比較してみます。
$ time shred -s 128M -n 1 /dev/null
real 0m 0.36s
user 0m 0.35s
sys 0m 0.00s
$ time shred --random-source=/dev/urandom -s 128M -n 1 /dev/null
real 0m 30.98s
user 0m 0.00s
sys 0m 30.95s
明らかに速いようです。
使ってみる
という訳でshredを使ってみます。デフォルトでランダムな値を3回書き込みますので至ってシンプルです。
$ shred -v /dev/sda
shred: /dev/sda: pass 1/3 (random)...
1回だけ書き込むなら以下のようにします。
$ shred -v -n 1 /dev/sda
shred: /dev/sda: pass 1/1 (random)...
shred: /dev/sda: pass 1/1 (random)...204MiB/75GiB 0%
実際の速度は?
ちょっと気になったので所要時間を測ってみたところ、乱数の書き込みでもddで/dev/zeroを書き込んだのと同じくらいの速度が出ているようです。
$ time shred -v -n 1 /dev/sda
shred: /dev/sda: pass 1/1 (random)...
shred: /dev/sda: pass 1/1 (random)...204MiB/75GiB 0%
(省略)
shred: /dev/sda: pass 1/1 (random)...75MiB/75GiB 100%
real 36m 12.27s
user 7m 19.18s
sys 0m 51.09s
$ time shred -v -n 0 -z /dev/sda
shred: /dev/sda: pass 1/1 (000000)...
shred: /dev/sda: pass 1/1 (000000)...204MiB/75GiB 0%
(省略)
shred: /dev/sda: pass 1/1 (000000)...75MiB/75GiB 100%
real 36m 12.18s
user 0m 5.26s
sys 1m 18.27s
$ cat /dev/zero | pv | dd of=/dev/sda bs=1M
74.5GiB 0:36:04 [35.3MiB/s] [<=> ]
2782+585345 records in
2782+585344 out
80026361856 bytes (80GB) copied, 2176.6 s, 36.9 MB/s