誤って削除したSDカード上の画像ファイルを復元

先日、某行政のサーバーのHDDがヤフーオークションに転売され、購入した方がデータ復元したところその行政が管理する個人情報が見つかる(復元できた)という事件が起きました。

近年HDD、SSD、SDカードなど多くのストレージメディア・媒体があるわけですが、たとえばFAT系のファイルシステムでは、単純なファイル削除を行った場合に、そのファイルのデータをビット単位で完全に削除している訳ではありません。そのファイルの「管理情報」(正確にはDIR_NAMEフィールドの0バイト)にファイルが削除されたというフラグ(例えば0x05と設定)を立てることで「そのファイルは削除したこととする」というルールとし、そのファイルの「本体データ」は自体は削除されていません。OSやカメラなどからはこのフラグ処理でファイルは見かけ上認識されなくなります。その為、ファイルの復元とは、このDIR_NAMEフィールドの0バイトを元に戻してあげれば、OSからファイルが再認識できるようになります。ただし、削除後に新しいデータを書き込んでしまい、復元したかったファイルが保存されていた領域に新たなデータが書き込まれてしまいますと復元は技術的に不可能となります。そういう意味でも、誤って削除した場合にはそのドライブ・SDカードなどに新しい書き込みをしないというのが鉄則です。

今回こんな記事を書いているのは、ちょっとした凡ミスで撮影画像ファイルが消えてしまいまして、その後無事復元できたので紹介します。

<参考>
ファイルシステムに興味があれば、SDカードなどで一般的に使われているファイルシステムのexFATが2019年にMicrosoft社から仕様が公開されたのでご覧ください。

参考1) exFAT file system specification – Win32 apps | Microsoft Docs
参考2) FATファイルシステムのしくみと操作法 (ELM by ChaN)

<経緯・現象> 
撮影してきたカメラからSDカードを取りだし、USBカードリーダー経由でWindows 10 PCにファイルを転送する際に、少し訳ありで転送先の保存に失敗しました。本来SDカードからの大切な画像データの転送は

1)SDカードの画像から、転送先に「コピー」
2)転送先でのデータ転送の「成否の確認」
3)2)の確認後、SDカードの画像を「削除」。
(*Windows等のファイル削除ではなく、カメラ内機能でのフォーマットが良いと思う)

とするのが必要なフローですが、ものぐさで、SDカードから転送先へ「移動」を選び、訳ありの理由で転送先での保存に失敗しました。その為、SDカード上での画像ファイルも失われたという状況でした。

<復元作業>
復元に際して、ファイルシステムを理解して削除フラグを変えるソフトを自作してもよいのですが、巷にはいくらでもソフトが溢れているのでそれを利用します。検索したら一番最初に出てきたEaseUS Data Recovery Wizardを使ってみます。この手のソフトはフリー版と有償版があり、フリー版は復元ファイル数に制限があるか、復元できそうという結果だけわかり復元するには有償版へというソフトが多い。とりあえず2GBまではFree版で使えるということで使って見ました。はっきり言って使い方は説明する必要もなく直感で分かると思います。

SDカード( J:ドライブ)をクリックしてスキャンするだけ。
削除された4つのファイルがすぐに検出され、「削除されたファイル(4)」として表示されるので、選択して右下の「リカバリー」ボタンを押し、復元保存先を指定するだけです。
またSDカード全体のスキャン完了を待たずして復元作業ができるのでサクサク復元できました。
*言うまでもなく復元保存先はSDカード以外を選択すべきです。
こんな感じで4つの誤って削除した画像(JPEG + Fujifilm RAW)が復元。
アイコンのサムネイルが表示されているように全くファイルは壊れていませんでした。

上記の通りWindowsのエクスプローラーで削除(または移動による削除)では、直後に実行すればほぼ確実に復元できそうな感じです。12枚ほど削除しては復元するを繰り返してみましたが100%復元できました。SDカード全体とか多量のファイルを復元する際には、有償版(Pro)を購入する必要があるかもしれません。

次におまけの実験で、カメラの画像再生での消去を試してみました。

カメラ(Fuji X-T3)の機能として画像削除
結果としては、JPEGは復元可能、RAW(Fujifilm RAF)は復元不可でした。

何回やっても、RAWの復元は失敗でした。これは、カメラ(X-T3)側のファイル削除が何か特殊なのか、原因はわかりません。一方で、カメラ側で画像を削除するという行為自体、基本的には避けるべきだと思います。ピンボケ、手ぶれなど明らかに撮影に失敗することもあるかと思いますが、今やSDカード等のメモリも大容量で千枚単位で撮れると思いますので、失敗しても現場でカメラ機能では削除せず、あとでPC等で消せば良いのです。上記の通り復元にも失敗するケースもありますし、手元の操作ミスで成功した写真も誤って消してしまう可能性もあるので、そういう意味でもカメラ側で画像を削除するのは避けるべきだと思います。

<まとめ>
ファイル復元ソフトを使えば、大方のファイルは削除直後なら復元できる。
・カメラ内機能での削除はRAWファイルは復元できなかったが、そもそもカメラ側で画像は消すべきではない。
・SDカードからPCへの転送は、コピー → 転送先確認 → 削除のフローを行った方が良い。プロなんかは、転送先で更にバックアップをとってからSDカード等の画像を消すという人も多いでしょうね。
・あと、何かあったときに焦らないように削除して復元するというフローを1度試しておくと良いかと思います。