こしあん
2024-11-18

クイックフォーマットしてしまったSDカードから動画を復活させるメモ


35{icon} {views}

・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コマンドなど)
  • MP4の先頭・末尾のファイル間で共通かつユニークなバイナリ列をPythonで探してファイルダンプ

ChatGPTにコードを作成させて動かすも、作成されたファイルがうまく再生されないことがわかり没。

pyfatfsを使う(失敗)

  • ChatGPTがpyfatfsを使ったら?と言ってきたので使ってみたが、exFATに対応しておらずに失敗

USBメモリ復旧を使う(成功)

「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の中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です