だいぶ以前にEOS R10用のSDカードを購入したことを紹介しました。

問題なくこのSDカードを使っていたのですが、あるとき突然データの読み込みができなくなってしまいました。
今回はこの状態からSDカード内のデータを救出したことを紹介したいと思います。
ちなみに使っているSDカードは下記になります。
SDカードの破損の発生
その瞬間は突然やってきました。
EOS R10を持って2回ほど旅行に行ったので、そろそろデータをバックアップしておこうと、手元にあったSDカードリーダにSDカードを差してWindows PCにデータを「移動」していたところ、途中でエラーで停止してしまいました。
あとから思うと、敗因は
- いつ購入したのかわからないような怪しいSDカードリーダを使ったこと
- 「コピー」ではなく「移動」にしたこと
であったように思います。
とくに「移動」では、SDカード上のファイルを削除する処理が入るため、SDカード内のデータを破損するリスクが高くなるのだと思います。
WindowsのエクスプローラーからSDカードを開こうと思ってももうだめです。無常にも
と表示されます。
ここで絶対に「ディスクのフォーマット」を選んではいけません。
必ず「キャンセル」を選んでください。
「キャンセル」を選んでも、アクセスできないと表示されてしまい、どうにもなりません。
私はこの段階でSDカード内のデータ(おそらくパーティションテーブルなどの管理領域)が破損したことを理解しました。
ファイル救出の準備
SDカードからファイルを救出する作業を開始する前にいくつか準備をしておきましょう。
SDカードのロック
まず最初の段階で行う必要があるのは、データの救出の確率を高めるために、SDカードへの書き込みをやめることです。
このため、SDカードのライトプロテクトスイッチをロック状態に変更しておきます。
ロック状態にするにはSDカードの側面にあるスイッチを端子と反対側にスライドさせます。
Windowsの電源オプションの変更
ファイルの救出作業にはかなり時間がかかる場合があります。
処理中にWindowsがスリープに入ってしまったりすると、悪影響が出る恐れがあります。
Windowsの電源オプション(「Windowsアイコンを右クリック」→「電源オプション」)で「スリープ状態にする」と「休止状態にする」を「なし」にしておきましょう。
TestDisk/PhotoRecの入手
TestDisk/PhotoRecはフリーのデータリカバリーソフトです。

SDカードからデータを救出するためのWindows用のソフトはいくつか存在しますが、調べた限りでは、有料であったり、無料版には使用制限があるため、今回はTestDiskを利用することにしました。
ちなみにTestDiskとPhotoRecの関係は
- TestDisk: 主にパーティション関係の操作をするソフト
- PhotoRec: ファイルのリカバリーに特化したソフト
となるようです。
TestDiskとPhotoRecは一緒に配布されています。今回はこの2つを組み合わせてファイルを救出します。
TestDiskは公式サイトから入手できます。

私が試したときには7.2が最新版でした(7.3はベータ版でした)。
「Windows 64-bit」のところがZipファイルへのリンクとなっていますので、ダウンロードします。
ダウンロードしたZipファイルは適当なところで展開しておきましょう。「testdisk-7.2」というフォルダーができるはずです。
このフォルダーには3つの重要な実行ファイルがあることを確認しておきましょう。
ファイル名 | 中身 |
---|---|
testdisk_win.exe | パーティション操作ツールであるTestDisk |
photorec_win.exe | ファイルリカバリーソフトであるPhotoRec (コマンドライン版) |
qphotorec_win.exe | PhotoRecのGUI版 |
SDカードのバックアップ(ダンプ)
作業を始める前にTestDiskを使ってSDカードの中身を丸ごと吸い出し(ダンプし)、SDカードの中身をバックアップしておきます。
SDカードのバックアップにはさきほど入手したTestDiskに入っている「testdisk_win.exe」を使用します。
SDカードをWindows PCに接続してからtestdisk_win.exeをダブルクリックして起動してみましょう。
ユーザーアカウント制御の画面が表示された場合は「はい」を選択してください。
文字だけのウィンドウが表示されるはずです。この画面では基本的にカーソルキーとエンターキーで操作します。
最初はログファイルについて聞かれるので「Create」を選択します。
次に操作するドライブを選択する画面になります。Windows PCに接続されているドライブが表示されるので、SDカードに該当するものを選択します。
SDカードの特定は容量や名前をヒントに探すとよいでしょう。私の場合は一番下の12GBのGeneric Mass-StorageがSDカードでした。
次に選択したドライブのパーティションのタイプを選択します。デジタルカメラ用のSDカードの場合は「Intel/PC partition」となると思います。
不安な場合は下から三行目の「Hint」を確認しましょう。SDカードがよほど壊れてなければ、TestDiskが検出したパーティションタイプが表示されているはずです。検出されたパーティションタイプを選択すれば大丈夫なはずです。
次は行いたい操作を選択する画面です。この画面では「Advanced」を選択しましょう。
Advancedの画面ではカーソルキーの左右で行いたい処理が選べます。ここでは「Image Creation」を選択します。
するとSDカードをダンプして生成されるイメージファイルを保存するフォルダーを選択する画面になります。
デフォルトでは実行したtestdisk_win.exeがあったフォルダーが表示されます。ここではカーソルキーの上下とエンターキーでイメージファイルを保存したいフォルダーを探し、目的のフォルダーが見つかったらcを入力すると、そのフォルダーを保存先として決定します。
なお1つ上のフォルダーに行くには「..」を選択します。
この画面では新しいフォルダーは作れないので、私は別途エクスプローラーでtestdisk_win.exeのあるフォルダーの中にimageというフォルダーを作成して、それを選択しました。
新しくフォルダーを作っても表示は更新されないので、いったん「..」を選んで1つ上に行ってから、戻って来る(TestDiskのフォルダーを選択する)と、新しく作ったフォルダーが表示されているはずです。
これでダンプが開始されます。
進捗状況はパーセントで表示されます。このパーセントが100%になればダンプの完了ですが、完了までにはかなり時間がかかりますのでじっくり待ちましょう。
次の画面のように「image created successfully」と表示されれば完了です。
指定されたフォルダーに「image.dd」というファイルができているはずです。
イメージファイルができたらいったんTestDiskは終了しておきます。
PhotoRecによるファイルの復元
ファイルの復元はSDカードから直接復元することも、バックアップしたイメージファイルから復元することもできます。
安全面から考えるとイメージファイルを使ったほうが良いのですが、私が試した限りでは、SDカードから直接ファイルを復元したほうが、成功率が高い(復元できるファイル数が多い)ようです。
そのため、まずはSDカードからの復元を試すことをオススメします。ただし、救出処理にかかる時間はSDカードのほうが長くなります。
SDカードからの復元
今度は「qphotorec_win.exe」をダブルクリックして実行しましょう。これで「QPhotoRec」というウィンドウが表示されるはずです。
まず「復元先のメディアを選択してください」のところで右端の「▼」選択して表示されるリストの中から「SDカード」を選択します。SDカードの特定は容量や名前をヒントに探すとよいでしょう。私の場合は一番下の12GBのGeneric Mass-StorageがSDカードでした。
イメージファイルからの復元を試みる場合は、ここで「復元元ディスクイメージを追加」を選ぶと、イメージファイルを選択できます。
次に復元したファイルの保存先を選択します。保存先は右側の「参照」ボタンを使うと簡単に指定できます。
私はrecover_from_sdというフォルダーを作成して、そこに保存することにしました。
なお、この画面の「ファイルフォーマット」を選択すると、復元するファイルの種類を限定できます。
ただデフォルトのままで良いと思います。
あとは「検索」を選択すると、SDカードから復元できるファイルを捜索します。
進捗状況はリアルタイムで表示されるのでわかりやすいと思いますが、いかんせん時間がかかります。じっくり待ちましょう。
100%になったら完了です。私の場合はJPGファイルが1585個、MOVファイルが40個復元されました。
イメージファイルからの復元
SDカードからの復元と同様にqphotorec_win.exeを利用します。
イメージファイルからの復元を試みる場合は、「復元元のメディアを選択してください」のところで「復元元ディスクイメージを追加」を選ぶと、イメージファイルを選択できます。
あとの操作はSDカードからの復元と同じです。
ちなみに、イメージファイルから復元を試みた場合は、JPEGファイルが487個、MOVファイルが24個でした。
SDカードからの復元とイメージファイルからの復元で差が出る理由は不明です。
TestDiskによるファイルの復元
TestDiskを使ってもファイルを救出する事ができます。
TestDiskはGUIがないので文字だけのシンプルな画面での操作になります。また、イメージファイルを利用するときはちょっと面倒だったりします。
SDカードからの復元
復元したファイルの保存先のフォルダーをあらかじめtestdisk_win.exeがあるフォルダー内に作成しておきましょう。
SDカードをWindowsPCに接続した状態で、SDカードをダンプした時に利用したtestdisk_win.exeをダブルクリックして実行します。
最初の方の操作はSDカードのダンプを行ったときと同じです。
まずはログファイルについて聞かれるので「Create」を選択します。
次に操作するドライブを選択する画面になります。Windows PCに接続されているドライブが表示されるので、SDカードに該当するものを選択します。
SDカードの特定は容量や名前をヒントに探すとよいでしょう。私の場合は一番下の12GBのGeneric Mass-StorageがSDカードでした。
次に選択したドライブのパーティションのタイプを選択します。デジタルカメラ用のSDカードの場合は「Intel/PC partition」となると思います。
不安な場合は下から三行目の「Hint」を確認しましょう。SDカードがよほど壊れてなければ、TestDiskが検出したパーティションタイプが表示されているはずです。検出されたパーティションタイプを選択すれば大丈夫なはずです。
次は行いたい操作を選択する画面です。この画面では「Advanced」を選択しましょう。
Advancedの画面ではカーソルキーの左右で行いたい処理が選べます。ここでは「Undelete」を選択します。
ここでSDカードのファイルシステムが壊れていなければ、復元できるフォルダー・ファイルのリストが表示されます。
しかし、私の場合は、ファイルシステムが壊れていしまっているようで、この先に進めませんでした。
イメージファイルからの復元
復元したファイルの保存先のフォルダーをあらかじめtestdisk_win.exeがあるフォルダー内に作成しておきましょう。
気を取り直してイメージファイルからの復元を試してみましょう。イメージファイルを指定してtestdisk_win.exeを実行するのは少々面倒です。
まずはWindowsアイコンを右クリックして「ターミナル」を選択しましょう。ターミナルが開いたら「cd」コマンドで「testdisk_win.exe」があるフォルダーに移動します。
ちなみに、ターミナルに「cd」と入力したあとに、testdisk_win.exeのフォルダーをドラッグ・アンド・ドロップすればフォルダーのパスが入力されます。
あとは使用したいイメージファイルを引数にtestdisk_win.exeを実行します。
testdisk_win.exe イメージファイル
これでTestDiskの画面が表示されます。最初の画面では指定したイメージファイルが表示されていることを確認しましょう。
問題なければ「Proceed」を選択して先に進みます。
次にパーティションタイプを選択します。
基本的には一番下に「Hint」として表示されているものを選択すれば良さそうです。私の場合は「None」を選択しました。
これでイメージファイルの概要が表示され、カーソルキーの左右で行う操作を選ぶことができます。
ここでは「Undelete」を選択しましょう。
これでイメージファイル内のファイル・フォルダーが表示されるはずです。
キヤノンのデジカメの場合、DCIMフォルダーに撮影した写真・動画が保存されます。そこでDCIMフォルダー全体を復元対象としましょう。
復元対象として選択するにはDCIMフォルダーを選択した状態で:を入力します。
これでDCIMフォルダーが緑色になるはずです。
次はCを入力して選択したフォルダーの復元を開始します。ここで復元したファイル・フォルダーの保存先を選ぶ画面になります。
保存先のフォルダーを選んだらCを入力しましょう。
これで復元が始まります。イメージファイルからの復元の場合は処理が早く進みます。完了すると次のように「Copy done!」と表示されます。
私の場合は989ファイルが復元できました。
復元が完了したらqを連打して、TestDiskを終了させましょう。
復元状況の確認
ファイルの復元ができたところで、その結果をざっと確認してみましょう。
使用したツール | 復元元 | 復元したファイル数 | その他 |
---|---|---|---|
PhotoRec | SDカード | 1625個 | ファイル名は元と異なる。MP4ファイルは復元されず。 |
PhotoRec | イメージファイル | 511個 | ファイル名は元と異なる。MP4ファイルは復元されず。 |
TestDisk | SDカード | 0 (復元できず) | |
TestDisk | イメージファイル | 989個 | ファイル名は元のまま。MP4ファイルも復元された。 |
SDカードからphotorecで復元したケースが一番多くのファイルが復元されています。しかし、復元され他ファイルを確認すると、明らかに小さいJPEGファイルや撮影日も取得できないファイルもあり、撮影データそのものではないものも復元されているようです。
ちなみにWindowsのエクスプローラーでは表示を「詳細表示」に切り替えて、先頭列の部分を右クリックすると表示する情報として「撮影日時」を追加できます。
「撮影日時」が選べない場合は「その他」を選択して、「撮影日時」をチェックしてください。
また、動画ファイルについてはPhotoRecの場合はMOVファイルとして復元される場合があります(一部MP4ファイルとして復元される場合もある)が、すべて再生不能でした。
一方で、イメージファイルからのTestDiskを使った復元が完璧かというとそうでもないようです。復元されたJPEGファイルのうち正しく表示できないファイルもちらほらありました。
ただ、前後の写真を見るとどうも自分でカメラで削除した画像が復元に失敗しているような感じもあります。
私の場合は「イメージファイルからTestDiskで復元した結果」をベースにし、PhotoRecで復元したファイルの中に、TestDiskで復元できなかったファイルが有ればそれを付け足す、という形で整理したほうが良さそうです。
復元結果の整理
複数の手段で復元しているので、多くのファイルが復元できています。
しかし、実際には重複していたり、不正なファイルが含まれていたりするので、整理が必要となります。
不正なファイルの削除
私の場合はまず復元されたファイルのうち、不正なファイルを削除しました。
具体的には次の2点を行いました。
- 各復元結果から不正なJPEGファイルは削除する。不正かどうかは撮影日時情報が取得できるかどうかで判定する。
- PhotoRecの復元結果からは動画ファイルは削除。試したところ再生できるファイルがないため。
これでだいぶファイルを減らすことができます。
不要なファイルの削除
以前にSDカードからPCにバックアップ済みのファイルは不要なはずです。
私の場合は旅行に行く前にデータをバックアップしていたので、撮影日時情報がその旅行より前のファイルはバッサリと削除できます。
ここまで整理するとファイルの数は次のようになりました。
使用したツール | 復元元 | JPEGファイル数 | MP4ファイル数 |
---|---|---|---|
PhotoRec | SDカード | 673個 | 0個 |
PhotoRec | イメージファイル | 58個 | 0個 |
TestDisk | イメージファイル | 767個 | 27個 |
重複ファイルの削除
ここまで整理して残ったファイルから重複するものを見つけて、重複していた場合は1つだけ残して他を削除します。
重複ファイルはCCleanerというフリーソフトで見つけることができます。
CCleanerを起動したら「ツール」から「重複検索」を選択します。
CCleanerを起動してPCのスキャンが始まってしまったらキャンセルしてください。
重複検索の画面では
- 次の条件で照合:「サイズ」と「内容」をチェック
- 無視: すべてチェックしない
として、「追加」を選択して復元したファイルがあるフォルダーを対象リストに追加しましょう。
検索対象のフォルダーを追加したら「検索」を選択します。
検索が開始されると重複しているファイルがグループ化して表示されますので、不要なファイルをチェック確認します。
基本的にはイメージファイルからTestDiskで復元したファイル(ファイル名がIMGで始まるファイル)を残し、それ以外はチェックします。
TestDiskでは復元できず、PhotoRecだけで復元できたファイルがもあるので、その場合はどちらかのファイルをチェックします。
不要なファイルをすべてチェックしたら「選択したものを削除」しましょう。
残ったファイルの確認
重複ファイルを削除しても、画像としては同じファイルが残ってしまうことがあります。
これはファイルの復元時にファイルデータの後ろにゴミデータが付いてしまうためのようです。JPEGファイルの場合は、末尾にゴミが付いていても正常に表示されます。末尾にゴミデータがついているため別ファイルとして認識されますが、実際には同じ画像であるのはこのためです。
残ったファイルを1つのフォルダーにまとめておき、撮影日時順に並べると、この手のファイルは見つけやすいと思います。
PhotoRecで復元したファイル名は「f+数字」となっているので、このファイルを見つけて前後のファイルと画像を見比べて、同じ画像であれば削除します。
私が確認した限りだと、TestDiskで復元したデータは多くの場合、ゴミデータが末尾についているようです。
したがって、削除するのであればTestDiskで復元した方のファイルのほうが良いと思います。
整理した結果
復元したファイル数と、整理した結果のファイル数を表にまとめました。
使用したツール | 復元元 | JPEGファイル数 | MP4ファイル数 |
---|---|---|---|
PhotoRec | SDカード | 673個 | 0個 |
PhotoRec | イメージファイル | 58個 | 0個 |
TestDisk | イメージファイル | 767個 | 27個 |
復元結果の整理後 | – | 771個 | 27個 |
結果的にはイメージファイルからTestDiskでほとんどのファイルが復元できました。しかし、TestDiskで復元できずPhotoRecだけで復元できたファイルも4つありました。
できるだけ多くのファイルを救出したい場合には、TestDiskとPhotoRecを併用するほうが良さそうです。
ざっと見た感じではほぼすべての写真と動画が救済できたのではないかと思います。
SDカードの再フォーマット
ファイルの救出が完了したら破損したSDカードは再フォーマットしておきましょう。
SDカードをデジタルカメラで使う場合は、デジタルカメラでフォーマットすることをオススメします。
SDカードのライトプロテクトスイッチは解除して、書き込めるようにしておきましょう。
キヤノンのデジカメであれば「カードの初期化」でフォーマットができます。
「物理フォーマット」というオプションがある場合はこれも選択しておきましょう
SDカードが物理的に壊れてなければ、これで復活するのではないかと思います。
まとめ
今回はTestDiskとPhotoRecという無料のツールで、読めなくなってしまったデジカメ用SDカードから写真と動画ファイルを救出したことを紹介しました。
多少時間はかかりますが、2つのツールを併用することで多くのファイルを復元することができました。SDカードに大事なデータが入っていた場合は、これらのツールを使ってみることをオススメします。
コメント