十分な空き領域が使用できないため、復元できませんでした @iPhone
なんで、こうなった
うちの奥さんが、通信費削減のために、キャリアを変更し iPhone4 を iPhone6 に機種変更。
iTunes で取っておいたバックアップを復元しようとしたら、容量が足りない、と。
話を聞いてみたら、 64GB を 16GB に変更したんだとか。
そりゃあ、入るわけないよね (´・ω・`)
backup のときの考慮不足を、restore の際に気が付いても、時すでに遅し、というやつ(仕事でもよくある)。
でも、そんなことは今だから分かるんで、変更前に相談されてたとしても、多分、気が付かない。
因みに iCloud の連絡先の同期も試してみたけど、それまで意識したことが無いらしく、随分と古い状態の連絡先でしか復元できてない。
よく見ると、アプリのアイコンが復旧されている。
中途半端には、復元はできているんだ。
ってことは、バックアップは、多分、正しく取れているし、restore のやり方さえ工夫すれば、どうにかなりそうな気もする。
「連絡先だけでも、何とかしてくれえ」
今日は、リアル人力検索だね :-)
旧iPhone4 は下取りに出しちゃったので、バックアップデータで何とかするしかない。
iTunes で取ったバックアップデータは、AppData の下にあった(そんなのは、すぐ分かる)。
c:\Users\(ID)\AppData\Roaming\Apple Computer\MobileSync\Backup\bf4b????
バックアップを取ったらしき更新時間のフォルダで、ファイルが 24,000 ほど入ってる。
ファイルの中をメモ帳で見てみると PNG や GIF らしきものがある。
拡張子は無いものの、どうやら、ファイルは、アーカイブ用の形式ではなく、ひとつひとつのファイルがそのまま保存されているらしい。
バックアップデータの容量の大半を占めるのは、画像、動画、音楽(多分)。
それらしきファイルを消してリストア、じゃあ、うまくは行かないだろうな。
普通に考えて、ファイルが無い、ってエラーになるのは、想像に難くない。
ファイル名は、16進っぽい感じで長さが同じ、ってことはハッシュか?
ってことは、どこかにファイル名とハッシュを結び付けている、インデックスのようなファイルがあるはず。
ファイル名のパターンが違うのは、この四つ。
2014/11/08 11:08 13,796 Info.plist 2014/11/08 11:08 5,081,512 Manifest.mbdb 2014/11/08 11:08 8,307 Manifest.plist 2014/11/08 11:08 189 Status.plist
一番、サイズが大きい Manifest.mdbd がインデックスなんだろう。開いてみるとバイナリだ。
何やら、ファイル名らしき文字列もある。
思いつきで、"address" という文字列を検索してみた。
あるある。
Library/AddressBook/AddressBookImages.sqlitedb
Library/AddressBook/AddressBook.sqlitedb
vCard で保存されてるかと思ったら、SQLite なのね。
頑張れば自分でも解析できそうな気もするけど、絶対に誰かがやっているはずだ。
というわけで、検索。
manifest.mbdb filename parse - Google 検索
しょっぱなの、stackoverflow 。
http://stackoverflow.com/questions/3085153/how-to-parse-the-manifest-mbdb-file-in-an-ios-4-0-itunes-backup
Python かー、と思ってたら、お尻の方に Ruby のスクリプトがあるじゃない。ラッキー。
コードをコピペして、実行。
結果は filenames.txt というファイルに出力される。
drwxrwxrwx 000001f5 000001f5 0 1361016319 1361016319 1317871906 (a04420b16aaf4552906cd9412ca40cec2784d181)HomeDomain::Library/AddressBook -rwxrwxrwx 000001f5 000001f5 5873664 1414800600 1413532677 1360759929 (cd6702cea29fe89cf280a76794405adb17f9a0ee)HomeDomain::Library/AddressBook/AddressBookImages.sqlitedb -rwxrwxrwx 000001f5 000001f5 622592 1415400149 1414800467 1360759940 (31bb7ba8914766d4ba40d6dfb6113c8b614be442)HomeDomain::Library/AddressBook/AddressBook.sqlitedb
括弧の中が、ハッシュ (SHA-1) で、それに対応するファイルが...
2014/11/08 11:07 622,592 31bb7ba8914766d4ba40d6dfb6113c8b614be442
あるある。
中身をのぞいてみると、電話番号らしき文字列が満載。
フィニッシュは、もう、そこまで見えている。
そして、復元
新しい iPhone でバックアップを取って、連絡先のファイルを置き換え。
そのデータで復元。
これで、できるはず。
ファイル名がハッシュらしいので、新しい iPhone6 で取ったバックアップは、古い iPhone4 のファイル名と違っているはず。なので、iPhone6 のバックアップでも、Manifest.mbdb の解析をしなきゃいけない。
- iPhone4 の Manifest.mdbd を解析する
- iPhone4 のバックアップデータから、スクリプトでファイル名を特定した AddressBook.sqlitedb と AddressBookImages.sqlitedb にあたるファイルを取っておく
- iPhone6 のバックアップを iTunes で作成する
- Ruby スクリプトで Manifest.mbdb を解析する
- AddressBook.sqlitedb と AddressBookImages.sqlitedb にあたるファイルを、2. で取っておいたファイルで上書き
- iTunes で iPhone6 を復元する
もろもろのデータを入力して、復元が完了した後に、連絡先を開いてみると...
できた (・∀・)
連絡先の復元はできたのだけれども...
解析をしてるやつがいるくらいだから、ツールを作っているやつもいるだろう、と。
http://ameblo.jp/tos0123/entry-11431335980.html
「iBackupBot for iTunes」というのがあるみたいなのね。
http://www.icopybot.com/itunes-backup-manager.htm
↑でダウンロードできたのは 7.8.9 。
でも、最新版では、ちょっと勝手が違うみたい。
複数のバックアップがあっても、最新の分しか、表示されない。
Alt を押しても、メニューバーが表示されない。
もう少し、古いバージョンだと、先のブログに書いてあるようなことはできるっぽい。
有料のツールを Free のトライアルで美味しいとこだけ持ってっちゃうのは、一応、ソフトウェアで飯を食ってる身でもあるし、どうかな、という気もする。
なので、詳しくは書きません :-)