クイックフォーマットしてしまったSDカードから動画を復活させるメモ
・SONYのカメラのSDカードのディレクトリ構造を知らなくて、動画をバックアップしたと勘違いして、実は保存されてない状態で、SDカードをクイックフォーマットしてしまった
・結論的にはフリーソフトを使えばファイル復活できたが、あまりに面倒だったので試したことをメモ
目次
なぜハマったか
SONYの一眼(α7CII)SDカードのディレクトリは「これを作ったやつ表出ろ」ってぐらい直感に反する構造をしている。
/DCIM
├── 100MSDCF
│ ├── DSC_00001.JPG
│ ├── DSC_00002.JPG
│ └── ...
├── 101MSDCF
│ ├── DSC_00001.JPG
│ ├── DSC_00002.JPG
│ └── ...
└── その他のフォルダ
/PRIVATE
└── M4ROOT
└── CLIP
├── C0001.MP4
├── C0002.MP4
└── ...
動画と静止画で全然違う場所に保存されているのだ。動画がPRIVATE/M4ROOT/CLIP
フォルダにあるのは初見じゃ気づかない……
DCIMフォルダに写真が保存されるのはいろんなカメラやスマホで共通。しかし、動画の保存場所は各社変わって、以前持ってたCANONの一眼(EOS R10)はDCIMの下に動画が保存されていた。CANONの場合はわかりやすくてDCIMだけバックアップすればいい。ただ、SONYは全然違う場所においている(機種によって保存ディレクトリは変わるかもしれない)。
これに気づかなくて、動画バックアップしたと勘違い、写真だけ保存して、SDカードフォーマットしてしまったのだ。ここから長い道のりが始まる
バイナリベースで復活(失敗)
- SDカードのイメージを作成(ddコマンドなど)
- Windowsだったので、HDD Raw Copy Toolを使用
- MP4の先頭・末尾のファイル間で共通かつユニークなバイナリ列をPythonで探してファイルダンプ
ChatGPTにコードを作成させて動かすも、作成されたファイルがうまく再生されないことがわかり没。
pyfatfsを使う(失敗)
- ChatGPTが
pyfatfs
を使ったら?と言ってきたので使ってみたが、exFATに対応しておらずに失敗
USBメモリ復旧を使う(成功)
「USBメモリ復旧」というフリーソフトが公開されている。これを使うと復元できた。
USBというタイトルだがSDカードも対応している。HDDやRAID向けの復活天使というソフトのリンクがついていたので、このフリー版かと思われる。
クイックフォーマットしたあと下手なことしなければ、だいたい復活できた。ただ結構失敗しているファイル(以前のセクターの残り?)もあったので、必ずしも復活できないかもしれない。
あと復活までかなり遅く、最初にSDカードをフルスキャンで探索して、そこからファイルを復活させるための探索を行うので、最低2回がフルスキャンが必要。SDカードリーダーがTypeCのを使えるならそっちのほうがいい。USB 2.0が30~40MB/sでしか読み込みできないところを、TypeCなら85-95MB/s出た。一応SDカードのカタログスペックでは、読み込み170MB/s程度出るものを使っていた。
ファイル復活系は有償の怪しいソフトがいっぱいあるので、とりあえずフリーでできる範囲でできて良かった。ただ、5枚のSDカードを復活させるだけで1~2日かかって、時間がめちゃくちゃ溶けたのではい……という感じ。
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー