損傷したSDXCカードから画像データを復旧

 私の場合、インターバル撮影等で大量*1に画像を撮影していることもあってか、年1~2回有るか無いか程度の頻度でSDカードの論理的な損傷が発生します。これまでの経験上、特定のカメラや特定のSDカードで発生するという訳ではなく、特定のカメラやファームウェアが駄目だとか、安物のSDカードだから駄目だとかブランド品なら絶対大丈夫だとかそういったことは無いと思っています*2。厳密には損傷確率の高低はあるかもしれませんが、年数回の頻度ならまぁ仕方ないと諦めがついています。というのも、デジタルカメラで記録済みの画像が復旧できなかったことは無いため*3。言い換えるならば、記録済みの画像は(私の経験に限れば)100%復旧できており、多少の面倒があっても失うデータは無く、論理障害による損傷が発生しても諦めがつくのです*4

 従来は復旧のためZAR(Zero Assumption Recovery)というツールを利用していましたが、今回初めてZARで復旧できない損傷を受けたのでそこら辺も含めて紹介します(前提となる環境はWindowsです)。

 本投稿はユーザデータの100%の復旧を保証するものでもありませんし、単に私の環境下での事例を紹介するものです。各ツール等の利用に伴っていかなる問題が発生しても一切責任は負いかねます。
 

ZAR

 正式名称はZero Assumption Recoveryというソフトウェアで、SDカードの復旧に特化したツールではなく多様なストレージに対応しています(有料)。但し、"Digital image recovery"モードのみfreeで利用可能です。すなわち、SDカードから画像データを復旧する分には無料で利用可能です。
Data Recovery Software, Solutions, Tutorials - ZAR Data Recovery

 英語が苦手でなければ、使い方は特に難しい点はありません。

 注意点として、よくあるパターンですがFATが壊れている場合には、データそのものは復旧できてもファイル名は失われます。この場合、適当な連番のファイル名(例. i00000 *5 )と適当な拡張子(例. tif, mov)のファイルとして復元されます。本来、カメラで記録された際のIMG*やDSC*のようなファイル名は失われますが、重複さえしなければ何でもよいので実用上の問題は無いでしょう。問題は拡張子のほうで、これは本当に適当に(やっつけで)設定されるようで、巨大なファイル(数百MB以上?)のファイルはmovが、数十MB程度のファイルはtifが設定されるような挙動をします。私は静止画はRAWで撮るので、Canon機ならCR2、NikonならNEF、SonyならARW、PentaxならDNG、OlympusならORF、PanasonicならRW2、SamsungならSRWのように、記録したカメラのRAW画像フォーマットに一致する拡張子にリネームしてやる必要があります。映像も同様に、mtsやmp4など各カメラの記録時の設定と一致するように必要に応じてリネームする必要があります。

修復できない事態に遭遇

 私はCanon EOS MでMagicLanternというカスタムファームウェアを使用しています*6。誤ってセルフタイマーを設定したままインターバル撮影を開始してしまったため、停止させるため一旦電源を落としました。その結果、EOS Mの電源を投入してもLEDが高速点滅するだけで起動しなくなってしまいました。カスタムファームウェアが記録されていない普通のSDカードに差し替えても、同様の状態で起動しないという今まで経験したことのない状態に陥りました。カメラ本体が壊れたのかと焦りましたが、バッテリーを抜き差ししたところ普通のSDカードでは起動するようになり、どうやらカメラ本体は無事なようです。ですが、カスタムファームウェアが記録されたSDカードに差し替えると先と同様の状態で起動せず。
 帰宅後にこのSDカードをPCに挿入すると、Windowsによる「フォーマットしますか?」のダイアログが表示され、損傷していることが判ります。で、従来同様にZARで復旧を試みたのですが、復元されたファイルの様子がおかしく、Lightroom等で開けません。バイナリエディタで開いてみると、復元されたファイルはいずれも内容が0x00で埋められており、ファイルサイズだけがそれらしい(EOS MのRAWファイルと同等の22MB前後)もののデータ内容が完全に失われています。

 そういえばWindows10へのUpgrade以降、ZARを使っていないため普通ではない方法でのSDカードへのアクセスが出来ていないのかと思い、ZARの最新版へのUpdate(9.2→X)を行ってみましたが、状態は変わらず。相変わらず0x00で埋められたファイルしか修復されません。WindowsやZARのバージョンによる問題ではなさそうです。
f:id:kachine:20161025184146p:plain

 諦めかけていたのですが、今回損傷したSDカードは正確には64GBのSDXCカードで、すなわちファイルシステムexFATのはず。ZARはFAT, NTFS, EXT, XFSに対応しているものの、exFATへの対応は謳われていません(過去にSONY NEX-6と64GBのSDXCカード*7の組み合わせで発生した損傷は修復したことがあるのですが)。ということで、別なツールの使用を試みることにします。
 

RecoveRx

 TranscendUSB3.0 SDカードリーダーを購入した際に、データリカバリーツールとしてRecoveRxが無料提供されていたので使ってみました。

RecoveRx - サービス & ダウンロード

 が、今回のSDXCカードを対象に指定すると異常終了が発生し使えず。Windows 10には対応しているので、SDカードの壊れ方に問題があるのだと想像されます(ファイルシステム自体は正常で、誤って削除したファイルの復旧のみ対応しており、今回のようにファイルシステム自体に損傷を受けてWindowsからファイルアクセスできないような場合は対応していないとか?)。
 

Recuva

 CCleaner等のPCメンテナンス系ソフトウェアの開発元のPiriformが提供しているRecuvaというツールがexFATにも対応しているようです。VHD等にも対応したRecuva Professionalは有料ですが、今回のようなSDカードからの復旧は無償版でも行えます。
 早速試してみたところ、無事復旧できました!ZARではファイル名・拡張子まで修復できたことがないのですが、(FATの損傷の仕方にもよるのでしょうけど)今回はファイル名・拡張子も含めて完全復旧されました。

f:id:kachine:20161025180451p:plain
↑64GBのSDXCカードのスキャンにかかった時間は約2時間11分(測定したわけではないもののZARも似たようなスピード感。この類のツールは時間がかかります)。

f:id:kachine:20161025180501p:plain
↑スキャン後に復元するのに345ファイルで4分強(ZARより速い)。
 

まとめと雑感

 exFATでなければ(SDXCではなく、SDHC/SDなら)ZARが強力な画像復元ツールとして利用可能ですが、exFATなら(SDXCなら)Recuvaが役立つことが解りました(今回は試していませんが、NTFSやFATでもRecuvaがZAR相当の実力があるかもしれません)。

 なお、私の場合データをNASに退避後、次回撮影前までに必ずカメラ側でSDカードの(削除ではなく)フォーマットを行っています。これの意味するところは、カメラが画像や映像を記録する際には、基本的にはシーケンシャルに(連続して)データを記録することになるはずです。こうした運用がSDカードの論理障害時のデータ復旧成功率100%に寄与しているような気もします。

 また、論理障害が発生したSDカードですが、物理的に損傷しているわけではないので基本的には再使用が可能です(特定のカードで障害が多発するのであれば、NANDの寿命や物理障害を疑う必要がありますが)。私の場合は、念のため再使用前にSD規格の大元であるSDA提供のSD Formatterで、消去設定:上書きフォーマット、論理サイズ調整:ONでフォーマットし、エラーが発生しないことを確認しています。その後、改めて使用するカメラでフォーマットを行ってから利用しています。
SDカードフォーマッター - SD Association
※ちなみに公式にはWindows10対応は明示されていないようですが、私の環境ではWindows10でもSD Formatterは動いています。
 



以上。

*1:今年は現時点までに約10万5千枚で、1ヵ月辺り1万枚程度の計算。

*2:購入直後から動作が不安定なSDカード(いわゆる不良品)や、物理的に壊れたSDカードを除く。

*3:Android端末で使用していたmicroSDカードが復元できなかったことは1回あるが、デジタルカメラで復元できなかったことは無い。

*4:記録中に電源が落ちるなど、記録が完了していないデータは当然復元できません。

*5:ZAR9ではこんな名前でしたが、最新のZARXではネーミングルールが変わっているようです。

*6:従って保証対象外の使用方法。

*7:今回損傷したカードとは別メーカーの別の個体。