美版iphone4有锁,之前一直都是采用伪激活方法,没法使用推送和facetime,最近在taobao上买了att激活卡,在激活和越狱后遇到了iphone的备份恢复问题,特此记录,供有类似问题的同学参考。
重新激活后不能恢复之前的备份,需要设置为新iphone,就在这一步带来了问题。但之前的之前的最新call_history、sms等还没有单独备份出来,因此首先想到的就是先从旧的备份里恢复。
但在itunes里恢复的时候傻眼了,从备份中恢复的窗口里显示的备份居然不完整(此备份是好久以前了),而刚刚最新的备份居然不显示。
抱着侥幸的心态,先从此次新的备份里先恢复看看。恢复完成后发现通话记录、sms都只到这个次新的时间点,大量的信息丢失,因此不可接受。
为什么itunes里不显示所有的备份?找了很久也没有找到一个合适的解决办法。
进入到itunes的备份目录,我在mac下是在 ~/Library/Application Support/MobileSync目录下,进去后发现系统重装之前的时间点的确是有备份的。
同时在google过程中发现还有别的软件可以读取itunes的备份记录,而itunes的备份中文件名都是一个编码后的文件。包括data recovery for itunes,下载下来运行后先试用发现最新的备份记录中各种信息的确在那儿,但试用版不能恢复文件。又找到了另外一个iphone backup extractor,这个是用.net实现的,在mac下可以通过mono来运行,但速度超慢,不知为何。
但从其官网网站的帮助里找到了这个好东西:iphone备份文件各种重要信息的命名方法!(iTunes stores the backup files with hex-encoded SHA1 hashes.)
几个重要文件的备份文件如下表。
Contents | OS | Real filename | Backup filename | Type |
---|---|---|---|---|
SMS / Text messages | 1-6 | sms.db | 3d0d7e5fb2ce288813306e4d4636395e047a3d28 |
SQLite 3 |
Contacts / address book | 1 | AddressBook.sqlitedb | adb8c77534444e97c31ff15924d50f3ed1fbd3b1 |
SQLite 3 |
Contacts / address book | 2-6 | AddressBook.sqlitedb | 31bb7ba8914766d4ba40d6dfb6113c8b614be442 |
SQLite 3 |
Calendar | 1 | Calendar.sqlitedb | 14ee8cdc3e6e0220399ff210246e1c92b7df89a0 |
SQLite 3 |
Calendar | 2-6 | Calendar.sqlitedb | 2041457d5fe04d39d0ab481178355df6781e6858 |
SQLite 3 |
Notes | 1-3 | notes.db | 740b7eaf93d6ea5d305e88bb349c8e9643f48c3b |
SQLite 3 |
Notes | 4-6 | notes.sqlite | ca3bc056d4da0bbf88b5fb3be254f3b7147e639c |
SQLite 3 |
Call history | 1 | call_history.db | a49bfab36504be1bf563c1d1813b05efd6076717 |
SQLite 3 |
Call history | 2-3 | call_history.db | ff1324e6b949111b2fb449ecddb50c89c3699a78 |
SQLite 3 |
Call history | 4-6 | call_history.db | 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca |
SQLite 3 |
Locations | 4-6 | consolidated.db | 4096c9ec676f2847dc283405900e284a7c815836 |
SQLite 3 |
因此想是否可以直接从这些备份里找到几个关键的数据库文件,然后越狱后用ssh覆盖对应的文件。重新安装系统、越狱、安装openssh。然后通过ssh拷贝所有的文件到iphone中:
/private/var/mobile/Library/SMS/sms.db /var/root/Library/AddressBook/AddressBook.sqlitedb /var/root/Library/Caches/locationd/consolidated.db /private/var/wireless/Library/CallHistory/call_history.db
其实,最重要的就是sms和call history,其他的关系不大。同时要注意,其中数据库文件的另外缓存文件(如sms.db-wal等文件)是需要删除的,然后将手机重新启动即可。
发表回复