GNU ddrescueは、壊れたディスクのデータ復旧(救出)ツール。
破損した部分に対して様々な方法でのコピーを試みます。同時にそのログとして ” mapfile” を作成します。
インストール
kaliにはデフォルトではバンドルされていないので、下記手順でインストールを行います。
sudo apt update
sudo apt install gddrescue
(注意)パッケージ名は “ddrescue” ではなく、 “gddrescue” です。最初の “g” はGNUの頭文字かと思います。

ヘルプ
ddrescue –help



実行
sudo ddrescue 入力ファイル 出力ファイル ログファイル

マップファイルの役割
ddrescueのログ(=マップファイル)は、途中中断したコピーの再開にも利用される他、ディスクの破損の状況を表すなどの重要なファイルとなります。
| 役割 | 内容 |
|---|---|
| 進捗保存 | 中断・再開時に同じ位置から再開可能 |
| エラー追跡 | 壊れたセクタを特定して後で再試行できる |
| 状況解析 | どの程度救出済みかを視覚化できる |
実際の処理
作業のスタンダードな流れの一例です。
- 正常領域を高速救出 (-n)
- 不良領域を再試行 (-r3)(3回試行)
- 逆方向で補完 (-R)
ddrescue -n 入力ファイル 出力ファイル ログファイル
ddrescue -r3 入力ファイル 出力ファイル ログファイル
ddrescue -R 入力ファイル 出力ファイル ログファイル
考え方としては、速く処理できる正常部分を先行コピーして、残った部分を時間をかけてコピーするという戦略です。
実行結果の確認
ログ(マップファイル)の表示

最終行に、範囲と状態を表されています。
最初が開始行、次がコピー範囲の長さ、その次が状態表示記号。
状態表示記号が “+” ですので、正常に読み取りが成功したということです。
(つまりは破損していないということ)
状態表示記号の解釈は以下の通りです。
| 記号 | 状態 | 内容 |
|---|---|---|
| + | 成功(rescued) | 正常にコピー済み |
| – | 読み取り失敗(bad-sector) | 読み取り不能領域 |
| / | 未試行(non-tried) | まだ処理していない領域 |
| * | トリミング済み | エラーの境界を絞り込み済み |
| ? | 無効データ/不明 | 不確定または不完全領域 |
| . | リトライ中(non-trimmed) | 再試行対象として残っている領域 |
ddrescueview
ddrescueのログのマップファイルをグラフィカルに表示するツールです。
こちらもkaliにはデフォルトではバンドルされていませんので、インストールが必要です。
インストール
下記にてインストールできます。
sudo apt update
sudo apt install ddrescueview

実行
下記にて実行します。
ddrescueview mapfile.log

結果はグラフィカルに表示されます。

| 項目 | 意味 |
|---|---|
| Input size | ファイルサイズ |
| Error count | 検出された読み取りエラーの数 |
| Rescued | 正常にコピー済みのデータ量 |
| Bad sectors | 現在も未救出の不良領域 |
| Non-tried | 未処理 |
| Non-trimmed / Non-scraped | 再試行が必要な残存領域 |
全然壊れていないので面白味のない結果になってしまっていますが。
dd_rescueとの連携
GNU ddrescueは、dd_rescueとほぼ同機能のツールですが、データ救出率を上げる為に組み合わせて順に使用します。
| ツール | 主な役割 | 特徴 |
|---|---|---|
| dd_rescue | 初期救出(軽度破損対応) | 単純・堅牢・エラーをスキップして処理継続 |
| GNU ddrescue | 精密救出(重度破損対応) | マップファイルで再試行・リカバリ効率が高い |
壊れたディスクが手元にあれば、あれこれ実行してみるのですが、それが無いのでこれ以上は詳述出来ません。すみません。(もし手に入ったら続きをやります)
まとめ
データ復旧ツール、GNU ddrescueの紹介でした。
実際のデータ復旧作業では、まず “dd_rescue” で荒く復旧し、次に “GNU ddrescue” で精密復旧、最後に “dc3dd” で検証という手順が多いようです。
参考)dd_rescueやdc3ddとの比較
上記3ツールの比較表です。
| 項目 | dd_rescue | GNU ddrescue | dc3dd |
|---|---|---|---|
| 主な目的 | 壊れたディスクからのデータ救出 | 壊れたディスクからの効率的なデータ救出 | フォレンジック向け安全なディスクコピー |
| 開発元 | Kurt Garloff | Antonio Diaz | DoD Cyber Crime Center (DC3) |
| ライセンス | GPL | GPL | GPL |
| ベースとなるツール | dd の改良版 | dd のアルゴリズムを拡張 | dd のフォレンジック拡張版 |
| エラー処理 | エラーをスキップして継続 | 詳細なエラーマップを作成し自動再試行 | コピー中に停止(オプションでスキップ可能) |
| エラーログ | 単純なログ出力 (-l) | 高度なマップファイル (–logfile=) | 詳細な操作ログ (hashlog, errorlog) |
| 再開機能 | 手動または-Aで再開 | 自動再開(マップファイル利用) | 手動指定による再開可能 |
| 進捗表示 | 標準出力に進捗バー表示 | 詳細な進捗(コピー済み・エラー率など) | 進捗レポート(ハッシュ進行含む) |
| 方向指定 | 正方向/逆方向コピー可 (-r) | 自動的に効率的な順序を決定 | 正方向のみ |
| ハッシュ機能 | なし | なし | 内蔵(MD5, SHA-1, SHA-256など) |
| 検証機能(Verify) | なし | なし | コピー後に自動検証 (verify=on) |
| ログによる再試行 | 手動 | 自動(複数パスで救出精度を高める) | 手動 |
| コピー再開の容易さ | 普通 | 非常に容易(マップファイルに基づく自動再開) | 普通 |
| 速度最適化 | 単純 | アルゴリズムで効率的スキャン | 高信頼性重視(速度より完全性) |
| 主な用途 | データ復旧 | データ復旧(より高精度) | フォレンジック(証拠保全) |
| 代表的な構文 | dd_rescue -l log /dev/sdb disk.dd | ddrescue /dev/sdb disk.dd map.log | dc3dd if=/dev/sdb of=disk.dd hash=sha256 log=dc3.log |
| 出力ログの利用価値 | 状況把握に有用 | 再開・再試行・可視化に重要 | 証拠保全報告用(監査可能) |
| GUIツールとの親和性 | Autopsy, Sleuth Kitなど | 同左 | Autopsy, EnCaseなど |
| 特徴まとめ | シンプルで安定・軽量 | 自動再試行と高精度のデータ救出に強い | 法的証拠としての完全性確保に最適 |
| 使い分け指針とその理由 | 簡易なコピー+エラー回避をしたい ➡️設定が簡単・シンプルで軽快 | 壊れたHDDから可能な限りデータを救出したい ➡️エラーマップと再試行で救出効率が高い | フォレンジック調査のために証拠ディスクをコピーしたい ➡️ハッシュ検証・ログ管理・法的整合性が標準搭載 |

コメント