如何从 LevelDB 恢复 Chrome 扩展程序设置

如何从 LevelDB 恢复 Chrome 扩展程序设置

当 Chrome 占用过多 RAM 时,我会失败,并且我会退出 RAM,当这种情况发生在 Chrome 崩溃的插件中时标签大纲我用它来存储和卸载许多标签、写笔记等。当发生这种情况时,Chrome 要求恢复插件,似乎可以通过重新加载来恢复它,但是它重置了所有设置,并且只显示当前打开的标签。我立即进入设置文件夹,其中的数据保存为 LevelDB/IndexedDB,路径为:C:\Users\__NAME__\AppData\Local\Google\Chrome\User Data\Default\IndexedDB\chrome-extension_eggkanocgddhmamlbiijnphhppkpkmkl_0.indexeddb.leveldb

在我重新加载崩溃的插件并复制文件以保存它们之前,我发现带有时间戳的数据库文件仍然没有被删除,这是:

000005.ldb 4.1Mb
000006.log 1.3Mb
000007.ldb 4.1Mb
CURRENT 1Kb
LOCK 0Kb
LOG 1Kb
MANIFEST-000001 1Kb

然而最后 4 个文件已经被修改并且几分钟后就000008.ldb创建了 200Kb 的小文件,这可能是当前打开的选项卡,它们会仅使用当前打开的选项卡覆盖设置。

我尝试读取清单文件,但其中包含大量二进制内容,可能无法读取。我还在扩展页面上打开 DevTools,然后导航到应用程序 → IndexedDB,在那里我找到了一个以 JSON 格式存储这些选项卡的密钥。我也尝试在 Google 上搜索类似的问题,我发现了这篇文章https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB其中显示了从控制台写入 DB 的示例,我也尝试打开它并成功:

window.indexedDB.databases(); // return to me name of DB
var db = window.indexedDB.open("TabsOutlinerDB34", 3);

但是现在我无法解决主要问题。我有两种恢复方法:

  1. 以某种方式重写设置以读取000005.ldb并从该数据库中恢复所有其他信息
  2. 以某种方式从 DevTools 读取或以其他方式000005.ldb导出包含所有设置的 JSON (~4Mb),然后从控制台重写到当前数据库中。

PS 扩展本身没有导入选项,但有导出(以不同的格式)

PSS 扩展已与 Google Drive 同步,但是我没有需要恢复的实际版本的数据,因为它不是自动化过程,而且在 Google Drive 中我无法访问这些文件,因为它们隐藏在扩展访问功能后面,我只能授予访问存储数据的权限,但如果它们以相同方式或其他方式存储,则无法自行上传最新文件,这将是一项更复杂的任务。

PSSS 无法从作者那里获得帮助,作者多年来没有回复任何人(看到很多关于此事的帖子)。

答案1

Tabs Outliner 扩展程序在当前版本的 Google Chrome 中存在一些问题,它会几乎随机地自发损坏,完全没有任何警告。备份文件越大,自发损坏的风险就越高。当扩展程序第一次停止工作时,我的备份大小约为 14000 KB(14 MB),因为我已经使用 Tabs Outliner 好几年了。

告诉 Chrome 修复它(或重新安装它)是唯一的解决方案,这两种方法都会删除该扩展的所有本地数据和设置。

修复或重新安装 Tabs Outliner 后,您需要通过查找原始许可证密钥电子邮件并单击该电子邮件中的链接来重新激活它。您还必须重新授权扩展程序以连接到您的 Google Drive。完成后,您应该能够访问所有备份功能。

我无法帮助从 db 文件中恢复扩展数据,但我可以提供一些容易被忽视的 Tabs Outliner 基本使用说明......

要从 Google Drive 备份恢复:

  1. 右键单击工具栏或菜单中的 Tabs Outliner 扩展图标,然后Options从出现的上下文菜单中进行选择。
  2. Tabs Outliner Options在随后打开的窗口/选项卡中,单击该BACKUP选项卡。
  3. 在窗口/选项卡Google Drive Backups的部分中Tabs Outliner Options,找到要恢复的备份,然后单击View列表中该条目的按钮。
  4. 将 Tabs Outliner 扩展的主列表视图窗口排列在Tabs Outliner Backup刚刚打开的窗口旁边。
  5. 要从备份中挽救/恢复节点、窗口或选项卡,您需要单击它们并将其从备份列表视图窗口拖到主扩展列表视图窗口中。此操作可能需要几分钟才能完成,并且扩展程序将冻结(您的浏览器也很可能如此),直到完成为止。
  6. 返回窗口中选项卡Export的部分,单击并将生成的文件保存在安全的地方以供日后参考。您可以稍后重新导入此文件,就像 Google Drive 备份一样。BACKUPTabs Outliner OptionsExport Tree To File

目前,与该文件进行有意义的交互的唯一方法是使用窗口/选项卡View Exported Tree中的选项Tabs Outliner Options。您可能使用轻量级 JSON 查看器,或者您可能希望编写自己的 Chrome 扩展程序或脚本来读取此文件和/或将其转换为更有用或更人性化的格式。

在三周的时间里,我大概从备份中恢复了十次。最后我不得不放弃,重新开始(并从备份中拖出一小部分重要的窗口),因为我的树太大了,扩展无法处理,而且开发人员不太可能在可预见的未来发布任何更新。欢迎来到惊喜废弃软件。

自从我允许它重置我的树以来,扩展程序(跨多台计算机)没有遇到任何问题。我当前的备份大小约为 400 KB。为了以防万一,我现在仍会偶尔手动将我的树导出到本地文件。

希望这些说明可以帮助您从此扩展中挽救至少大部分数据。

如果您选择继续深入研究 Chrome 的内部结构并手动从扩展数据库中提取内容,我祝您好运,一路顺利。

相关内容