Article

フリーソフトで実現するデータ復旧

高田晃太郎
フリーソフトで実現するデータ復旧

無料ツールで実践するデータ復旧ガイド:読み取り専用で戦略的に進め、エスカレーションで守り切る

クラウド移行が進んでもデータ損失はゼロにならない。Backblazeの公開統計では近年のHDD年次故障率は概ね1〜2%で推移し(2022年Q2時点の総合年間故障率は約1.46%)[1]、Veeamのレポートでもランサムウェア関連の指標が高止まりしている(例:身代金の支払いを認めた組織が76%[2]、依然として約7割の組織がサイバー攻撃下にあるとの報告[3])。復旧の要点として広く指摘されるのは、高価な魔法ではなく、手順を外さない初動と、読み取り専用で扱う慎重さだ[5]。無料で使えるデータ復旧ツール群は成熟しており、要件に合えば商用と遜色ない結果を目指せる。ただし万能ではない。どこまで無料で戦え、どこから専門ラボに委ねるかを見極める基準が、CTOやエンジニアリーダーには求められる。

無料ツールの適用範囲と限界を現実的に見極める

無料のデータ復旧は、論理障害と軽度の読取不良に対しては強いが、深刻な物理障害では勝率が落ちる。論理障害とは削除や上書き、パーティションテーブルの破損、ブートレコードの崩れなど、媒体そのものが回転し読み取れる状態の障害を指す(動作はするが中の構造が壊れているイメージ)。この領域ではTestDiskやPhotoRec、The Sleuth Kit、extundelete、ntfs-3g系ユーティリティが広く使われている[7][8][9]。軽度のセクタ不良・不安定メディアにはddrescueが再試行とマップ管理で粘り強く効く[6]。一方、ヘッド損傷やモータ故障、基板焼損のような物理障害はクリーンルーム(塵埃管理された分解環境)を要し、無料の範囲を超える[4]。復旧に挑むなら、まず可用性より完全性を優先し(多少時間がかかってもデータの改変を避ける)、元媒体に書き込まない原則を徹底するのが、境界線の手前で勝率を上げる最短路になる[5]。

ファイルシステムによっても難易度が変わる。NTFSやext4はオープンなツールが豊富で、誤削除やMFT(Master File Table)/ジャーナルの崩れからの復旧事例が多い。APFSはスナップショットやコンテナの概念が絡むが、PhotoRecのシグネチャベースやLinux経由での読み取りで相応の回収が見込める[7]。ZFSは自己修復(チェックサムでの整合性確認)とメタデータの堅牢性が高い反面、壊れ方が深いとzpoolレベルでの判断が必要になる。暗号化ボリュームは鍵があるか否かで景色が一変する。BitLockerの回復キーやLUKSのパスフレーズが残っているなら、読み取り専用でアンロックしたうえで論理復旧に移れるが、鍵がない場合、無料ツールでのアプローチは事実上閉ざされる。そこで大切なのは、媒体の状態、ファイルシステム、暗号化の有無、RAIDやLVMの構成を素早くインベントリ化し、安全な作業順序に落とし込む判断だ[5]。

失敗しない初動とフリーソフト実践:上書きゼロで進める

初動の目的は、状況の固定化だ。通電時間を延ばさず、OSの自動マウントを避け、ログ可能な環境で作業する。リードオンリー属性を設定できるなら物理層で固める。Linuxベースのレスキュー環境から起動し、dmesgのエラーやSMART(自己診断情報)の健全性を確認しながら、まずはビット単位の複製に着手する。再現性のある成功は、この「原本を触らない」原則を守った手順から生まれる[5]。

# 読み取り専用フラグ(可能な場合)
sudo hdparm -r1 /dev/sdX

# S.M.A.R.T. の健康状態を確認(通電は最小限に)
sudo smartctl -a /dev/sdX

媒体の状態にかかわらず、作業はddrescueのイメージ取得から始める。単純なddよりもエラー管理と再試行戦略に優れ、障害面に優しい。ログマップを残せば中断再開も簡単だ[6]。良好な媒体なら80〜150MB/s程度で完走し、エラーが多い媒体では5MB/s以下まで落ちることもある。時間はかかってもマップに基づく段階的回収が最後の数パーセントを連れてくる[6]。

# 1パス目:速やかに良好領域を吸い上げる
sudo ddrescue -n -d -v /dev/sdX image.raw map.log

# 2パス目:エラー領域に粘り強く再試行
sudo ddrescue -r3 -d -v /dev/sdX image.raw map.log

# 完了後のハッシュで完全性を担保
sha256sum image.raw > image.raw.sha256

取得したイメージは直接マウントせず、まずはパーティションテーブルを静的に観察する。The Sleuth Kitのmmlsでオフセットを確認し、必要があればループデバイスに割り当てて読み取り専用で扱う[5]。

# パーティションテーブルの確認
echo 'mmls image.raw' && mmls image.raw

# 例:オフセットが2048セクタ、512B/セクタの場合
sudo losetup --find --show --read-only --offset $((2048*512)) image.raw
# 出力された /dev/loopY を読み取り専用でマウント
sudo mount -o ro,loop /dev/loopY /mnt/recovery

マウントできない、あるいはディレクトリエントリが壊れている場合は、TestDiskでメタデータの再構築を試す。インタラクティブな操作だが、読み取り専用でパーティションの探索とMFT修復に挑める[8]。ファイル名やディレクトリ構造を諦めてでも内容を拾い上げる必要があるときはPhotoRecを使う。シグネチャベースの回収で、動画や画像、Office文書など拡張子ごとの回収に強い[7]。

# TestDisk(対話的)、読み取り専用で開始
sudo testdisk image.raw

# PhotoRec(回収先は別ボリューム)
sudo photorec image.raw

メタデータを詳細に追いたいときはThe Sleuth Kitで時系列と存在証跡を積み上げる。mactimeを使えば、改ざん検知やランサムウェア感染前後の差分確認に役立つ。論理削除に対するピンポイント回収なら、ファイルシステム別の復旧ツールが効率的だ。ext4ならextundelete、NTFSならntfsundeleteで、削除ファイルの一覧と回収が可能だ[9]。

# Sleuth Kit:タイムライン生成(例:ext系列)
fls -m /mount -r image.raw > bodyfile.txt
mactime -b bodyfile.txt 2025-08-01..2025-08-31 > timeline.csv

# ext4の誤削除復旧(ジャーナルが残っている前提)
sudo extundelete image.raw --restore-file /path/to/file

# NTFSの誤削除復旧
sudo ntfsundelete /dev/loopY --undelete --match filename

Windowsしかない現場でも、無料の範囲で足場を築ける。RecuvaはGUIでの論理復旧に向き、FTK Imagerは無償でセクタレベルのイメージ取得ができる。とはいえ、より安全な手順を選ぶならLinuxのライブ環境を用意し、上記のワークフローで読み取り専用・イメージ先行を徹底するのが再現性の面で優位だ[5]。

ケーススタディ:RAID、仮想化、暗号化を無料でどこまで攻めるか

RAIDの再構成は「クローン作成後」に仮想的に行う

RAIDは焦って現物をmdadmやベンダーツールで組み直すと取り返しがつかない。まずは各メンバディスクをddrescueでクローンし、クローンを材料に解析する。メタデータのシグネチャから順序やチャンクサイズを推定し、アセンブルは読み取り専用で試す。単一ディスク故障のRAID5であれば、メタデータが生きていれば自動検出できることもあるが、常に—readonly相当の姿勢で臨む。

# メタデータの確認
sudo mdadm --examine /dev/loop[0-3]

# 想定パラメータで読み取り専用アセンブル(クローンに対して)
sudo mdadm --assemble --readonly /dev/md0 /dev/loop0 /dev/loop1 /dev/loop2

# アセンブル結果のファイルシステムを読み取り専用で確認
sudo mount -o ro /dev/md0 /mnt/recovery

ZFSの場合は、破損度合いによってはロールバック可能なインポートが効く。zpool import -Fは最後の安全なトランザクショングループへ戻してくれるが、これも必ずイメージ上で行い、オリジナルに書き戻さない[10]。Btrfsはbtrfs restoreで読み取り専用回収が可能で、メタデータが壊れてもファイルの中身を別ボリュームへ救い出せる[11]。

# ZFS:最後の整合点へフォールバック(イメージ上)
sudo zpool import -o readonly=on -F poolname

# Btrfs:読み取り専用でファイルを救出
sudo btrfs restore -vi image.raw /mnt/restore

仮想化・ストレージプールでは階層を丁寧にほどく

LVMやVMFS、qcow2の上にファイルシステムが乗っている構成では、層ごとに読み取り専用で展開していく。LVMはpvscan・vgscan・lvscanで構成を発見し、アクティベート時も読み取り専用フラグを使う。VMFSは無償のvmfs-toolsで読み取り専用マウントができ、仮想ディスクを取り出したうえで個別に復旧を進められる。qcow2はqemu-nbdでブロックデバイスとして公開すれば、前述の手順に合流する。

# LVMを読み取り専用でアクティベート
sudo pvscan && sudo vgscan && sudo lvscan
sudo lvchange -ay -P --readonly vgname/lvname

# VMFSを読み取り専用でマウント
sudo vmfs-fuse image.raw /mnt/vmfs -o ro

# qcow2をNBDで公開
sudo modprobe nbd max_part=8
sudo qemu-nbd --connect=/dev/nbd0 disk.qcow2

暗号化は鍵の有無で判断を即断即決する

暗号化ボリュームは、鍵があれば論理復旧の土俵に上げられるが、なければ無料の範囲での可能性は薄い。BitLockerは回復キーやTPMの保護情報が残っていればdislockerで読み取り専用マウントができる。LUKSはヘッダのバックアップがあれば復旧可能性が上がる。何よりも早い段階で鍵情報の所在確認を済ませ、鍵がないなら即座に有償ラボへのエスカレーション判断をするほうが、ビジネス的にも合理的だ[5]。

# BitLockerを読み取り専用で開く
sudo dislocker -V /dev/loopY -r --recovery-password=XXXXX -- /mnt/bit
sudo mount -o ro,loop /mnt/bit/dislocker-file /mnt/recovery

# LUKSを読み取り専用で開く
sudo cryptsetup open --readonly /dev/loopY luks_ro

ROIと運用設計:無料で攻め、撤退基準を決めて勝ち切る

コスト比較と思考停止を避ける指標

無料ツールはライセンス費用がゼロでも、人件費と時間はゼロではない。内製での一次対応が適切なのは、論理障害や軽度の読取不良が疑われ、RTO(復旧目標時間)が数時間〜1営業日程度許容されるケースだ。ddrescueのスループットを80MB/sと仮定すると、2TBのイメージ取得に約7時間、再試行を含めると半日〜1日を見込む。これを許容できるSLA(サービス水準合意)であれば、社内対応は十分に合理的だ。逆に、止まっているシステムの逸失利益が時間単価で大きく、かつ障害が物理的に見えるときは、初動のクローン作成だけを内製し、ラボへのエスカレーションで全体のTCOを最小化できる。判断の指標は、障害種別、RTO/RPO(目標復旧時点)、鍵の有無、そして一時停止のコストである。

再現性を生む運用:ランブック、環境、監査の三点セット

無料ツールを武器にするには、運用で差をつける。読み取り専用のレスキュー用USB、堅牢なストレージに向けたイメージ保存先、ハッシュ計算のテンプレート、ddrescueのマップファイルの保全手順、作業ログの標準化をランブックにまとめておく。作業マシンはインターネット遮断のジャンプボックスとして用意し、タイムゾーンと時計同期を厳密に保つ。ログは開始時刻、コマンド、ハッシュ、オフセット、エラー数、終了時刻を揃え、事後の監査にも耐える形にする。これらの準備は、実際の復旧精度だけでなく、説明責任やコンプライアンス対応の面でも利益を生む。

復旧が完了したら、バックアップ設計の見直しに必ず跳ね返す。イミュータブルなオブジェクトストレージ、週次のリストア訓練、スナップショットのライフサイクル、ランサムウェア対策の隔離ネットワークなど、復旧で得た学びは即座に予防へ投資するのが経営的に正しい。無料ツールで得た成功体験を、次は発生させない仕組みへ転写する。これが最も高いROIを生む。

まとめ:無料で戦い、備えで勝つ

無料のデータ復旧は、原理と手順を守れば実務で十分に武器になる。まずは書き込みを止め、ddrescueで媒体を丸ごと複製し、イメージ上でTestDiskやPhotoRec、Sleuth Kitを使って静的に解析する。RAIDや仮想化、暗号化でも、鍵や構成情報を押さえ、読み取り専用で層を丁寧にほどけば成果に近づく。時間とSLAの制約が厳しい場面では、早期のエスカレーションでビジネスの損失を最小化するのも勝ち方の一つだ。

今日できる一歩は、レスキューUSBの用意とランブックの整備、そして試運転だ。テスト用の古いディスクでddrescueとPhotoRecの一連を回し、ハッシュとログの取り方をチームで揃えてほしい。次のインシデントが来たとき、あなたの現場は慌てず、無料の道具で最大限の成果を引き出せるだろう。何から始めるか、今この瞬間に決めてみてほしい。

参考文献

  1. Backblaze. Backblaze Drive Stats for Q2 2022. https://www.backblaze.com/blog/backblaze-drive-stats-for-q2-2022/
  2. Veeam. 76% of organizations admit to paying ransomware criminals with one-third still unable to recover data. https://www.veeam.com/company/press-release/cybersecurity-research-76-of-organizations-admit-to-paying-ransomware-criminals-with-one-third-still-unable-to-recover-data.html
  3. Veeam. Veeam report finds close to 70 percent of organizations still under cyber attack despite improved defenses. https://www.veeam.com/company/press-release/veeam-report-finds-close-to-70-percent-of-organizations-still-under-cyber-attack-despite-improved-defenses.html
  4. Fields Data Recovery. How do data recovery clean rooms work? https://www.fields-data-recovery.co.uk/blog/how-do-data-recovery-clean-rooms-work-
  5. SANS Institute. Digital Forensic Sifting: How to perform a read-only mount of filesystem evidence. https://www.sans.org/blog/digital-forensic-sifting-how-to-perform-a-read-only-mount-of-filesystem-evidence/
  6. GNU Project. GNU ddrescue. https://www.gnu.org/software/ddrescue/
  7. CGSecurity. PhotoRec documentation. https://www.cgsecurity.org/testdisk_doc/photorec.html
  8. CGSecurity. TestDisk – Partition Recovery. https://www.cgsecurity.org/testdisk_doc/partition_recovery.html
  9. ntfsundelete manual page. https://www.mankier.com/8/ntfsundelete
  10. zpool-import(8) — Ubuntu Manpage. https://manpages.ubuntu.com/manpages/questing/en/man8/zpool-import.8.html
  11. btrfs-restore(8) — Linux man-pages. https://man7.org/linux/man-pages/man8/btrfs-restore.8.html