シェルスクリプトでディスク消去(5)
さて、消去処理ですがただ消去実行だけでは面白くないので、さらに処理を分岐させます。
shredコマンドでは色々なオプションが用意されています。--helpオプションをつけて実行します。
shred --help
(略)
-f, --force 書き込みができるように必要に応じてアクセス権限を変更する
-n, --iterations=N N 回上書きを繰り返す (デフォルト: 3 回)
--random-source=FILE ランダムバイトのソースを FILE にする
-s, --size=N N で指定したバイト数 shred を行う (接尾辞として K, M, G など
が使用可能)
-u, --remove 上書き後にファイルの割当を解除し削除を行う
--remove[=HOW] -u と同様だが、削除の方法を HOW で制御できる。下記参照
-v, --verbose 進行状況を表示する
-x, --exact ブロックを満たすようにファイルサイズを切り上げない。通常
ファイル以外ではこれがデフォルトの動作
-z, --zero shred を行ったことを隠すために最後に 0 で上書きする
--help display this help and exit
--version output version information and exit
(略)
消去方式として、①乱数を発生させ意味のない文字列を書き込むrandom方式、②0を1回書き込む方式、③乱数1回書き込んだあと0を1回書き込む方式、④乱数を2回書き込んだあと0を1回書き込む方式の4つの方法を選んでもらうというようにします。
これもwhiptailで実現できます。具体的には [ --radiolist ]オプションをつけて以下のようにします。
whiptail --radiolist "タイトル" 0 0 0 1 1番目 ON 2 2番目 OFF 3 3番目 OFF
選んだもののタグ(この場合、1,2,3のいずれか)が出力されます。これを変数に入れるには、標準出力とかをこねくり回せばうまくいきます。
choice=$(whiptail --radiolist "タイトル" 0 0 0 1 1番目 ON 2 2番目 OFF 3 3番目 OFF 3>&1 1>&2 2>&3)
echo "選択したものは${choice}です"
ということで消去選択メニューとして以下のようなコードとします。
choice=$(whiptail --radiolist "消去方式を選択してください" 0 0 0 1 乱数1回書き込み ON 2 ゼロ1回書き込み OFF 3 乱数1回ゼロ1回書き込み OFF 4 乱数2回ゼロ1回書き込み OFF 3>&1 1>&2 2>&3)
変数$choiceの値によって分岐させて消去を実行していきます。