从chat.db恢复OS X iMessages历史记录

时间:2014-11-26 06:25:38

标签: macos sqlite restore imessage

我保存了~/Library/Messages/内所有内容的副本,其中包含一个名为的文件夹 Attachments,其中包含一堆子目录,其中包含我所有附加到邮件(图像,文档,电影等)的文件,以及三(3)个名为的文件:

  1. chat.db(文件大小约为20 MB),
  2. chat.db-shm(33 KB)和
  3. chat.db-wal(565 KB)。
  4. 我打开了大chat.db文件,它包含了SQLite数据库中的所有消息。我知道这个文件包含重建我的iMessage历史记录所需的所有信息,我只是不确定如何说服iMessages.app这样做。

    我已经在这里待了大约60分钟,尝试了几件不同的事情(我不会列出其中的每一件事)。

    必须有一种从我保存的这些文件中恢复邮件的方法。

2 个答案:

答案 0 :(得分:3)

在我头上撞了3天之后 - 我发现了以下内容:

所有这3个文件都保存了Archives中的内容索引。因此,删除损坏的文件和/或只恢复这3个文件的备份应该已经完成​​了。但事实并非如此。我已经尝试在更换这些文件后重新启动消息应用程序一千次,但无济于事。在我决定运行lsof以查看实际使用chat.db的内容之前。令我惊讶的是不是消息app:

[none-none][18:42:24] vlazarenko@alluminium (~/Library/Messages)$ lsof -n | grep chat.db
IMDPersis 1655 vlazarenko  txt       REG                1,3      32768 107632436 /Users/vlazarenko/Library/Messages/chat.db-shm
IMDPersis 1655 vlazarenko    4u      REG                1,3     309032 107632435 /Users/vlazarenko/Library/Messages/chat.db-wal
IMDPersis 1655 vlazarenko    5u      REG                1,3       4096 107632432 /Users/vlazarenko/Library/Messages/chat.db
IMDPersis 1655 vlazarenko    6u      REG                1,3      32768 107632436 /Users/vlazarenko/Library/Messages/chat.db-shm

正如您所看到的,这是一个名为IMDPersis的过程。寻找那个:

[none-none][18:57:10] vlazarenko@alluminium (~/Library/Messages)$ ps -ef | grep IMDPersis
  501  1655     1   0  6:48PM ??         0:00.11 /System/Library/PrivateFrameworks/IMDPersistence.framework/XPCServices/IMDPersistenceAgent.xpc/Contents/MacOS/IMDPersistenceAgent

一个哈哈!时刻。退出消息,替换文件,对kill的PID执行IMDPersistenceAgent,然后启动消息,立即恢复了我的历史记录。

以为我会分享,虽然这是一个老话题。

答案 1 :(得分:2)

Apple论坛上有一些有用的信息。

基本上,只需移动备份的~Library/Messages文件夹即可替换新的空~Library/Messages文件夹。

可能是chat.dbchat.db-shmchat.db-wal文件与密钥等链接在一起,因此这可能是iMessages不接受更改的原因。

https://discussions.apple.com/thread/5378830