iPhoneに同期した写真をサルベージする方法

HDDが吹っ飛んだために、PCにあった写真がiPhone上で孤立し、閲覧はできるものの、PCに吸い出すことができず、次に同期したら消えるという不安定な状態になっていた。
一念発起して何とかリカバリー出来たので方法のメモ。


ファイルを取り出すだけなら、コピーで良いが、フォルダ構造がiPhoneのアルバムに変換されてしまっているため、それをフォルダに戻す方法が思いつかず、しばらく放置していた。
データを全部コピーしたうえで、管理領域っぽいところを探っていたら対応が取れたので上手くいった。

  1. iPhoneのRawファイルシステムを見られるソフト(例:iFunbox)でPhotoDataをバックアップする
  2. SQLiteデータを閲覧できるソフト(例:SQLiteBrowser)でPhotoData/Photos.sqliteを読み込む
  3. テーブルZGENERICALBUMでアルバム-UUIDの対応が得られる
  4. テーブルZGENERICASSETでファイル-UUIDが対応が得られる
  5. PhotoData/Sync/assertAlbumOrder(中身はXML)をに葉が写真ファイルのUUID、節がアルバムのUUIDの形でリストが保存されている
  6. UUIDからファイル名とアルバム名に変換し、アルバム名フォルダへコピー用のスクリプトを作成し、移動させる


この方式で、フォルダ構造はもとに戻すことができた。
ファイル名だけは連番になってしまったが、大部分が昔使っていた携帯電話から取り出した写真とかなのでファイル名に意味はなく、時系列順になっていればOKなので特に問題なし。


復元でOSをスッキリさせたうえで、再同期させたので妙な挙動なども無くなり万々歳。
来週初めにはiOS8.1が出るからそれまで復元は待てばよかったかも…と思ったけどまあいいや。


ファイルを取り出したいだけなら、PhotoData/Syncの下にデジカメと同じフォーマットで保存されている。