シェルスクリプトでディスク消去(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の値によって分岐させて消去を実行していきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です