
Linux向けにデバイスとパーティションを安全かつ効率的に消去するツール
dwipe は、Linux 上でディスクやパーティションを消去し、データを安全にするためのツールです。dwipe はデバイス選択時に十分な情報を提供することで、ミスを減らすことを目指しています。

| 機能 | dwipe | nwipe | shred | dd |
|---|---|---|---|---|
| ファームウェア消去(SATA/NVMe セキュアイレース) | ✓ | ✗ | ✗ | ✗ |
| ソフトウェア消去(Zero、擬似乱数) | ✓ | ✓ | ✓ | ✗ |
| インタラクティブ TUI | ✓ | ✓ | ✗ | ✗ |
| 複数同時消去 | ✓ | ✗ | ✗ | ✗ |
| 消去状態の永続化 | ✓ | ✗ | ✗ | ✗ |
| ホットスワップ検出/解放 | ✓ | ✗ | ✗ | ✗ |
| デバイス/パーティションのブロック | ✓ | ✗ | ✗ | ✗ |
| 中断されたソフトウェア消去の再開 | ✓ | ✗ | ✗ | ✗ |
| 消去操作のログ記録 | ✓ | ✗ | ✗ | ✗ |
| マウント検出/防止 | ✓ | ✓ | ✗ | ✗ |
| 高速統計サンプリングによる検証 | ✓ | ✗ | ✗ | ✗ |
| 認定消去(DoD/Gutmann 標準、完全検証、証明書) | ✗ | ✓ | ✗ | ✗ |
- ファームウェア消去(SATA/NVMe)が最も完全かつ高速です: ハードウェアアクセラレーションによる消去はコントローラレベルで動作し(数秒から数分)、すべてのドライブマッピングをクリアしますが、デバイス全体の消去が必要で、進行状況の報告や目に見える検証はありません。
- 1パスのゼロ埋めによるソフトウェア消去で十分です: 2001年以降の最新ドライブは、ゼロの1パスで確実に消去できます(NIST SP 800-88)。マルチパスモードも利用可能ですが、セキュリティ保証が追加されるわけではありません。
- 検証はインテリジェントな統計サンプリングを使用します: 100セクションに分割されたディスク全体から1%のサンプルを採取するだけでも、完全なシーケンシャル読み取りを行わずに広範囲をカバーできます。
/dev/、/sys/、/proc/ インターフェースを使用)オプション(履歴画面でのクリップボードコピー用):
apt install xclip または xsel)apt install wl-clipboard)pipx install dwipedwipe --helppipx uninstall dwipedwipe をインストールしますdwipe を実行します(sudo が自動的に要求されます)wを押したら、略称(例: Rand、Zero、Crypto)を入力する必要があります。消去方法は、推奨度の低いものから高いものへと表示され、最後のものが * でマークされます。通常は最後の選択肢を選んでください。ただし...Rand または Zero を使用してください(中断可能、進行状況表示あり)。dwipe はレジュームを自動検出して再スキャンします。または r を押して手動で再スキャンします。ドライブは凍結が解除された状態になるはずです。dwipe は、安全機能を備えた包括的なディスク消去機能を提供します:
注:
dwipeはファイルシステムラベルを表示します。ファイルシステムラベルがない場合はパーティションラベルを表示します。選択を容易にするために、パーティションとファイルシステムに適切なラベルを付けることをお勧めします。
単に引数なしでコマンドラインから dwipe を実行します: dwipe
注: すべての設定オプションは、最後に保存した値をデフォルトとして使用します。これらのデフォルトは --help に表示され、キーボードショートカットで対話的に変更できます。コマンドライン引数は保存された設定よりも優先されます。
--mode {-V,+V} - 検証モード(デフォルト: 最後の設定)
-V - 自動検証なしで消去+V - 消去完了後にデバイスを検証--passes {1,2,4} - ソフトウェア消去のパス数(デフォルト: 最後の設定)
--verify-pct {1,3,10,30,100} - 検証パーセンテージ(デフォルト: 最後の設定)
--dense {True,False} - コンパクト表示モード(デフォルト: 最後の設定)
True - コンパクトな間隔(ディスク間の空行を削減)False - 間隔あり(読みやすさのためディスク間に空白行)--port-serial {Auto,On,Off} - ディスクポート/シリアル表示(デフォルト: 最後の設定)
Auto - ディスク全体の場合のみポート/シリアルを表示(推奨)On - 常にポートとシリアル番号を表示Off - ポートとシリアル番号を表示しない--slowdown-stop {0,4,16,64,256} - ディスクの速度低下時に停止(デフォルト: 最後の設定、ミリ秒)
0 = 無効--stall-timeout {0,60,120,300,600} - ストールタイムアウト(秒)(デフォルト: 最後の設定)
0 = 無効(タイムアウトなし)--firmware-wipes または -F - ファームウェア消去を有効にする
--dump-lsblk - 解析したデバイス情報をダンプして終了(デバッグ用)--help - 利用可能なすべてのオプションを含むヘルプメッセージを表示dwipe は色分けを使用して、デバイスと操作の状態に関する即時の視覚的フィードバックを提供します:
dwipe は視認性と美観を向上させるための複数のカラーテーマをサポートしています。
利用可能なテーマ:
default - 端末デフォルト(基本 ANSI カラー)dark-mono - ダークモノ(ほぼ白をほぼ黒の背景に、明るい色)light-mono - ライトモノ(ほぼ黒をほぼ白の背景に、明るい色)solarized-dark - Solarized Dark パレットsolarized-light - Solarized Light パレット(明るい端末背景用)gruvbox - Gruvbox Dark パレットnord - Nord パレットテーマの変更方法:
テーマの特徴:
STATE 列は各デバイスの現在の状態を示します:
上部の行に利用可能なアクションが表示されます。一部はコンテキスト依存です(特定のデバイスでのみ利用可能):
h を押すと消去履歴ログが表示されます。履歴画面には、タイムスタンプ、デバイス情報、結果を含むすべての消去および検証操作が表示されます。
履歴画面のアクション:
/ を付けると JSON 内を深く検索)クリップボードコピー方法(自動検出):
注: OSC 52 がターミナルで動作しない場合でも、画面上にテキストが表示されるので手動で選択できます。tmux の場合は、
.tmux.confにset -g set-clipboard onを追加してクリップボードを有効にしてください。
dwipe はファームウェア消去(ハードウェアアクセラレーション)とソフトウェア消去をサポートしています。ファームウェア消去には --firmware-wipes または -F フラグが必要です。以下の表は、消去方法を最も望ましいもの(ランク1)から順に示しています。
注: HDD にはウェアレベリングや隠しブロックがないため、ソフトウェア消去はファームウェア消去と同程度に徹底していますが、より優れた制御(進行状況、一時停止/再開、中断可能性)を提供します。
| ランク | 略称 | 正式名称 | 備考 |
|---|---|---|---|
| 1 | Rand | Software Random Write | 推奨。予測不可能なパターン。統計的検証 |
| 2 | Zero | Software Zero Write | よりシンプル。高速検証(最初の非ゼロバイトで失敗) |
注記:
- ファームウェア消去では、各ドライブがサポートする方法のみ表示されます(FwCAPS 列を参照)。
- ファームウェア消去には自動スポットチェック検証が含まれます。
+Vサフィックスはソフトウェア消去後の自動検証を有効にします。+Vがない場合は、v を押して手動で検証します。- マルチパスソフトウェア消去(2または4)はゼロ/ランダムパターンを交互に使用し、選択したモードで終了します。
- USB ドライブとパーティションにはファームウェア消去はなく、ソフトウェア消去のみ利用可能です。
停止した消去(状態 s)は、デバイスで w を押すと再開できます。同じタイプの消去を選択するか、選択しないと0%からやり直しになります。
再開の仕組み:
再開の例:
利点:
ソフトウェア消去は、統計分析と高速フェイル最適化を備えたインテリジェントな検証を使用します。検証は設定可能でオプションです。
スマートサンプリング:
--verify-pct コマンドラインオプションで設定(設定として保存)パターン検出:
検証モード:
+V サフィックス付きのモード(Rand+V または Zero+V)を使用し、検証%を0より大きく設定統計的サンプリングが逐次的よりも優れている理由:
ファームウェアイレース (SATA/NVMe セキュアイレース) は、すべてのファームウェアイレースに対して自動的に実行される無条件のスポットチェック検証を使用します。これにより、ハードウェアイレースコマンドが実際に実行されたことを検証します。
スポットチェックの方法:
スポットチェックが効果的な理由:
重要: ファームウェアイレースは、ソフトウェアイレースのようなパーセンテージベースの検証を表示しません。スポットチェックはイレース操作の一部として静かに実行され、成功/失敗は永続的なイレース状態マーカーに記録されます。
デバイスをソフトウェアイレースする場合、dwipe は以下を表示します:
W (イレース済み) および s (部分的にイレース済み) の状態は、再起動後も永続します。これは、デバイスの最初の16KBにメタデータを書き込むことで実現されます:
永続状態を持つデバイスが表示される場合、追加情報が表示されます:
? が入力されると、利用可能なキーとコマンドラインオプションとその現在の設定を確認できます。
デバイスリストは以下を使って移動できます:
/ キーでインクリメンタルサーチフィルタリングを起動します (vimスタイルの動作):
動作方法:
フィルタ例:
フィルタは正規表現パターンをサポートしています。以下に便利な例を示します:``` /sda # Show only sda and its partitions /sd[ab] # Show sda, sdb and their partitions /nvme # Show all NVMe devices /nvme0n1p[12] # Show only partitions 1 and 2 of nvme0n1 /usb # Show devices with "usb" in their labels
Press **ESC**(メイン画面)でフィルターをクリアし、すべてのデバイスを再表示します。
**注意:** 無効な正規表現パターンは無視されます。フィルターは、入力中に最後の有効なパターンに維持されます。
## セキュリティ上の考慮事項
**ソフトウェアワイプの重要な制限事項:**
- `dwipe` は交互パターンによるマルチパスワイプをサポートしていますが、特定の DoD 5220.22-M や Gutmann 認定パターンシーケンスは実装していません。
- **個人用および業務用データ** には十分以上に適しています(古くなった認定破壊は不要)。
- **機密文書、極秘、または高度に機密性の高いデータ** には適していません。認定されたパターン固有のワイプとコンプライアンス証明書が必要です。
- **SSD に関する考慮事項**:
- 最新の SSD はウェアレベリングを使用しており、未マッピングのブロックにデータが残る場合があります。
- TRIM/DISCARD により、完全なデータ消去が妨げられる可能性があります。
- SSD の場合は、最大限のセキュリティを確保するために、メーカーのセキュアイレーズユーティリティの使用を検討してください。
- ランダムモードは、SSD ではゼロ書き込み以上の追加のセキュリティを提供しない可能性があります。
**ベストプラクティス:**
- ワイプする前に、デバイスのラベルとサイズを注意深く確認してください。
- **ブロック**機能を使用して、重要なディスクを保護してください。
- 機密データの主要なセキュリティ対策として、暗号化を検討してください。
---
---
## トラブルシューティング
### dwipe が起動しない
- **エラー: "cannot find lsblk on $PATH"** - `util-linux` パッケージをインストールしてください。
- **権限が拒否されました** - `dwipe` は自動的に sudo を要求します。sudo を使用できることを確認してください。
### 端末の表示の問題
- **クラッシュ後の表示の破損** - `reset` または `stty sane` コマンドを実行してください。
- **色が機能しない** - 端末が色をサポートしていることを確認してください(ほとんどの最新端末はサポートしています)。
### ワイプの問題
- **デバイスをワイプできない** - STATE 列を確認してください:
- **Mnt** - まずパーティションをアンマウント: `sudo umount /dev/sdXN`
- **Blk** - **b** キーを押してブロック解除
- **Busy** - ディスク上の別のパーティションがワイプ中です。
- **ワイプが非常に遅い** - 大容量ドライブでは正常です。書き込み速度を確認して進捗を確認してください。
- **ワイプが停止しているように見える** - ほとんどの場合、不良ディスクが原因です。Direct I/O により、正常なディスクでは進捗がほぼ一定になります。
---
### ファームウェアワイプの考慮事項
ファームウェアワイプ(SATA/NVMe セキュアイレーズ操作)は、ソフトウェアワイプとは異なる特性を持ちます。
**フリーズされたドライブ:**
- SATA ドライブは、通常、セキュリティ対策として BIOS/UEFI によって POST 中にフリーズされます。
- これはドライブレベルのセキュリティ機能であり、`dwipe` の制限ではありません。
- **解決策**: システムを一時的にサスペンドし、再開します。`dwipe` は再開を自動検出して再スキャンします(または **r** キーを手動で押します)。サスペンド/レジュームにより SATA リンクが電源再投入され、フリーズが解除されます。
- サスペンド/レジューム後もドライブがフリーズされたままの場合は、完全な電源オフ(ドライブのコンデンサを放電するために 10 分以上)を試してから、起動して再スキャンしてください。
**デバイスの癖と互換性:**
- ストレージデバイスには、セキュアイレーズ操作に影響を与えるさまざまなファームウェア実装とハードウェアの癖があります。
- 一部のドライブは特定のサニタイズ操作を完全にサポートしていない場合、タイミング問題がある場合、または予期しない動作を示す場合があります。
- `dwipe` はすべてのデバイスが正常にワイプされることを保証できません。一部のハードウェアは消去コマンドに協力しない場合があります。
- ワイプ後は必ずドライブを確認してください(**v** キーを使用)。消去が実際に完了したことを確認します。
- 癖のあるハードウェアでミッションクリティカルなデータを破壊する場合は、フォールバックとしてメーカー固有のセキュアイレーズツールの使用を検討してください。
---
### 不良または故障ディスクへの対処
dwipe は、問題のあるストレージデバイスに対する組み込みの保護機能を備えています。
**自動エラー処理。** ディスクエラーが発生した場合のワイプ中:
* 連続書き込みエラー: 3 回連続で書き込みに失敗するとワイプが中断されます。
* 合計エラーしきい値: 合計 100 回の書き込みエラーでワイプが中断されます。
* 自動再試行: 書き込み失敗時、デバイスは自動的にクローズされ、再度オープンされます(一時的エラー回復)。
* ファイル記述子の回復: 不良 FD 状態が検出され、ハンドルがリフレッシュされます。
**停止と速度低下の検出。** dwipe は書き込みパフォーマンスを監視し、問題のある操作を中断できます。
* 停止検出: 5 分間(設定可能)進捗がない場合に中断。
* 速度低下検出: 最初の 5 秒間のベースライン速度を測定し、速度がしきい値(例: ベースラインの 1/4)を下回った場合に中断。
* 進捗追跡: 継続的な監視により、書き込みが実際にデバイスに到達していることを確認します。
**ワイプがスタックした場合...** ワイプがフリーズまたは応答不能に見える場合:
* 最初の試行: **s** キーを押して、選択したワイプを正常に停止します。
* 辛抱強く待つ: 一部のディスク操作は、カーネルレベルでタイムアウトするまでに数分かかることがあります。
* それでもスタックする場合: **S** (Shift+s) を押して、すべてのワイプを停止します。
* 最後の手段: インターフェースが完全にフリーズした場合:
* Ctrl-Z を押して `dwipe` をサスペンドします。
* 端末で次を実行します: `sudo pkill -f "python.*dwipe"(dwipe プロセスのみ対象)`
* reset を実行して、表示が破損している場合は端末を復元します。
**問題のあるメディアでの問題防止。** 既知の不良ディスクや疑わしいハードウェアの場合:
* 最初に検証: **v** キーを押して読み取り可能性をテストします。
* 低速を使用: ダーティページスロットリングを有効にします(**d** キー)I/O 負荷を軽減します。
* システムログの監視: 別の端末で `dmesg -w` をチェックしてディスクエラーを確認します。
* ハードウェアの問題を考慮: USB エンクロージャ、ケーブル、コントローラーが問題の原因になることがよくあります。
**一般的なディスクエラーパターン**
* USB 接続の切断: dwipe が検出して回復を試みます。
* 不良セクタ: エラーがカウントされます。過剰な場合、ジョブは中断されます。
* コントローラーのタイムアウト: カーネルがハングする可能性があります。停止検出がトリガーされるはずです。
* ディスクフル: デバイス終端を超える書き込みエラーは適切に処理されます。
**中断後の回復。** ディスクエラーによりワイプが中断された場合:
* デバイスの状態は **s**(停止/部分)と表示されます。
* 再開を試みることができます(**w**)一時的エラーであれば成功する可能性があります。
* または、実際に書き込まれた内容を確認するために検証します(**v**)。
* エラーが続く場合は、ディスクの交換を検討してください。
注: 一部のディスクは根本的に壊れており、確実にワイプできません。dwipe は自身とシステムを保護しますが、ハードウェア障害を修正することはできません。
---
#### USB 経由での SATA ワイピングに関する推奨事項
* 要件 1: SAT(SCSI-ATA 変換)サポート
* USB ブリッジは ATA コマンドを「通過」できる必要があります。
* テスト: アプリがドライブの詳細に「セキュリティ」セクションを表示できる場合、ブリッジは SAT をサポートしています。
* 要件 2: 安定した電力
* ファームウェアワイプ(特に 3.5 インチ HDD)は、ピーク時に大きな電力を消費します。
* リスク: USB バスパワーのみのケーブルを使用すると、ワイプ中に電圧が低下し、ブリッジがリセットされてドライブがロック状態で「ブリック」する可能性があります。
* 推奨: 3.5 インチドライブには、外部電源付きの USB ドックを常に使用してください。
* 要件 3: コマンドタイムアウトの整合性
* ブリッジに過激な「ウォッチドッグタイマー」が設定されていないこと。
* リスク: 一部のブリッジは、60 秒間「データ」が表示されないと切断します。ファームウェアワイプ中、ドライブは内部でビジー状態になり、データを送信しません。
* 推奨: ASMedia(1153E)や JMicron(JMS578)などの高品質チップセットを使用してください。
##### ロックされたデバイスのロック解除```
sudo hdparm --user-master u --security-unlock NULL /dev/sdX
sudo hdparm --user-master u --security-disable NULL /dev/sdX
Issue やプルリクエストは github.com/joedefen/dwipe までお寄せください。
MIT ライセンス - 詳細は LICENSE ファイルを参照してください。
dwipe がロックした場合、パスワードは NULL です。それ以外の場合はロックに使用したパスワードを使用してください。DEL で取り外し、物理的にドライブを交換し、必要に応じて r で再スキャンします。| 状態 | 意味 |
|---|
| - | デバイスは消去可能 |
| ^ | デバイスは消去可能であり、dwipe 起動後に追加された(ホットスワップ) |
| Mnt | パーティションがマウントされている、またはディスクにマウントされたパーティションがある - 消去不可 |
| N% | 消去が進行中(完了率を表示、0-100%) |
| vN% | 検証が進行中(完了率を表示、v0-v100%) |
| STOP | 消去または検証が停止中 |
| s | 消去が停止 - デバイスは部分的に消去済み(再開または検証可能) |
| W | 消去が正常に完了(再度消去または検証可能) |
| Blk | ディスクが手動でブロックされている - パーティションは非表示で消去不可 |
| Unbl | ディスクがブロック解除されたばかり(一時的な状態) |
| キー | アクション | 説明 |
|---|
| w | wipe | 選択したデバイスを消去(確認が必要) |
| v | verify | 消去済みデバイスの検証、またはマークなしディスクのパターン検出(コンテキスト依存) |
| s | stop | 進行中の選択した消去を停止(コンテキスト依存) |
| S | Stop All | 進行中のすべての消去を停止 |
| DEL | delete | システムからディスクを削除(ディスク全体のみ、コンテキスト依存) |
| b | block/unblock | ディスクをブロックまたはブロック解除して誤消去を防止 |
| / | filter | 正規表現パターンでデバイスをフィルタリング(一致するデバイスとすべてのアクティブな消去を表示) |
| r | rescan | すべてのデバイスを再スキャンし、ハードウェア機能の検出をリセット |
| h | history | 消去履歴ログを表示 |
| t | themes | テーマプレビュー画面を開き、カラーテーマの表示と変更 |
| q または x | quit | アプリケーションを終了(最初にすべての消去を停止) |
| ? | help | すべてのアクションとナビゲーションキーを表示するヘルプ画面 |
| ESC | clear filter | フィルタをクリアしてリストの先頭に移動 |
| ESC | back | ネストされた画面にいる場合、前の画面に戻る |
| a | time format | 消去履歴の時刻表示形式を切り替え(ago+time, ago, time) |
| 環境 | 方法 | 備考 |
|---|
| SSH セッション | OSC 52 | ターミナルエスケープシーケンス。ターミナルのサポートが必要(iTerm2, kitty, alacritty, Windows Terminal, tmux で set-clipboard on 設定) |
| Wayland | wl-copy | wl-clipboard パッケージが必要 |
| X11 | xclip/xsel | xclip または xsel パッケージが必要 |
| フォールバック | ターミナル | シェルに抜け、手動コピー用にテキストを表示 |
| ランク | 略称 | 正式名称 | 備考 |
|---|
| 1 | Crypto | Sanitize Cryptographic Erase | 最速。暗号化キーを消去。即座にデータを無効化 |
| 2 | Block | Sanitize Block Erase | 高速。すべてのブロックを割り当て解除状態にリセット |
| 3 | FCrypto | Format with Crypto Erase | 高速。キー消去で名前空間を再フォーマット |
| 4 | FErase | Format with User Data Erase | 高速。簡易的なデータ消去で再フォーマット。暗号化ほど徹底されていない |
| 5 | Ovwr | Sanitize Overwrite | 数分。全ブロックにパターンを書き込み。最も徹底的だがほとんど不要 |
| 6 | Rand | Software Random Write | フォールバック。ソフトウェア経由でランダムデータを書き込み。大容量ドライブでは数時間 |
| 7 | Zero | Software Zero Write | フォールバック。ソフトウェア経由でゼロを書き込み。検証可能だが遅い |
| ランク | 略称 | 正式名称 | 備考 |
|---|
| 1 | SCrypto | Sanitize Cryptographic Erase | 最速。暗号化キーを消去。SANITIZE 機能が必要 |
| 2 | Enhanced | ATA Security Erase Enhanced | 高速。ベンダー固有の暗号キー破壊を含む詳細消去 |
| 3 | SBlock | Sanitize Block Erase | 高速。ブロックを工場出荷状態にリセット。SANITIZE 機能が必要 |
| 4 | Erase | ATA Security Erase Normal | 数分。全セクタにゼロを書き込み。広くサポート |
| 5 | SOverwrite | Sanitize Overwrite | 数分。パターンで上書き。SANITIZE 機能が必要 |
| 6 | Rand | Software Random Write | フォールバック。ウェアレベリングやリマップされたブロックには到達不可 |
| 7 | Zero | Software Zero Write | フォールバック。ウェアレベリングやリマップされたブロックには到達不可 |
| ランク | 略称 | 正式名称 | 備考 |
|---|
| 1 | Rand | Software Random Write | 推奨。中断可能、再開可能、進行状況表示あり |
| 2 | Zero | Software Zero Write | 推奨。中断可能、再開可能、高速検証 |
| 3 | Enhanced | ATA Security Erase Enhanced | 遅い(数時間)。中断不可。進行状況なし。ソフトウェア消去と同じ結果 |
| 4 | Erase | ATA Security Erase Normal | 遅い(数時間)。中断不可。進行状況なし。ソフトウェア消去と同じ結果 |
| 停止時 | 現在のパス数 | 動作 |
|---|
| 50% | 1パス | 再開: 残り50%を書き込み |
| 150%(4パスのうち1.5) | 1パス | すでに完了(150% > 100%) |
| 150%(4パスのうち1.5) | 4パス | 再開: 残り2.5パスを書き込み(150% → 400%) |
| 100%(1パス完了) | 2パス | 再開: 2パス目を書き込み(100% → 200%) |