工具与项目 4.0 · 优秀 2026-04-26 · X

wacrawl 0.2.0:用 age 加密把 WhatsApp 桌面端聊天记录分片备份到 GitHub

wacrawl 0.2.0 新增加密 Git 备份功能:wacrawl backup push 将 WhatsApp Desktop 存档用 age 加密分片写入 GitHub;wacrawl backup pull 解密、验证并本地恢复,支持跨设备同步。技术栈:age 加密 + Git 版本控制,数据主权完全在自己手里。开源工具,可自托管,备份历史永久可查。把个人数据备份这个硬需求用现代加密工具解决,数据主权完全自己掌控。

打开原文回到归档

wacrawl 0.2.0 发布:WhatsApp 桌面版加密 Git 备份与恢复

来源:X/Twitter | 作者:@steipete

原文 / Original

Released wacrawl 0.2.0.
New: encrypted Git backup/restore for WhatsApp Desktop archives. wacrawl backup push writes age-encrypted shards to GitHub; backup pull decrypts, verifies, and restores locally.

中文翻译

wacrawl 0.2.0 正式发布。
新增功能:为 WhatsApp 桌面版存档提供加密 Git 备份与恢复功能。wacrawl backup push 将 age 加密的分片写入 GitHub;backup pull 则解密、验证并在本地恢复。

社区回复 / Replies

@SkylerQuen

English: @SkylerQuen:@steipete Wow This is amazing 👏 I love this 😀

中文: @SkylerQuen(中文):哇,太厉害了 👏 这个太棒了 😀

@koszjajek

English: @koszjajek:hey @steipete — wacrawl chokes on the very first import: constraint failed: UNIQUE constraint failed: chats.jid (1555)

WhatsApp Desktop has two ZWACHATSESSION rows for the same JID (one stale, one empty new session — happens after re-activations / device migrations). Archive ends up with 0 chats / 0 messages, can't recover without an --ignore-conflicts flag or dedupe-by-latest-ZLASTMESSAGEDATE on import.

macOS, ~40k messages in source. Filed on GitHub already.

中文: @koszjajek(中文):嘿 @steipete — wacrawl 在第一次导入时就卡住了:constraint failed: UNIQUE constraint failed: chats.jid (1555)。WhatsApp 桌面版对同一个 JID 有两条 ZWACHATSESSION 行(一条是过期的,一条是空的 — 发生在重新激活/设备迁移之后)。存档最终是 0 聊天/0 消息,没有 --ignore-conflicts 参数或按最新 ZLASTMESSAGEDATE 去重就无法恢复。macOS,源文件约 4 万条消息。已在 GitHub 上提交 issue。

@alphabatcher

English: @alphabatcher:@steipete finally this update coming for us

locked in on Wacrawl 0.20

中文: @alphabatcher(中文):终于等到了这个更新。我们锁在 Wacrawl 0.2.0 了。

@JackN1x

English: @JackN1x:@steipete wacrawl 0.2.0 is 🔥 Better backups, easy restores!

中文: @JackN1x(中文):wacrawl 0.2.0 太棒了!更好的备份,简单的恢复!

@Vanarchain

English: @Vanarchain:@steipete 🔥🔥

中文: @Vanarchain(中文):🔥🔥

@emonuxui

English: @emonuxui:@steipete Encryption + Git-based sharding turns a chat archive into something closer to a versioned, auditable state machine. Once you can reconstruct state reliably, recovery and migration stop being edge cases and become core product behaviors.

中文: @emonuxui(中文):加密 + 基于 Git 的分片将聊天存档变成了更像版本化、可审计状态机的东西。一旦你能可靠地重建状态,恢复和迁移就不再是边缘情况,而是核心产品行为。

@Kristen20051

English: @Kristen20051:@steipete Does it handle large media blobs well or just text? GitHub's file size limits usually kill me on backup scripts.

中文: @Kristen20051(中文):它能很好地处理大型媒体文件还是只处理文本?GitHub 的文件大小限制通常会让我的备份脚本挂掉。

@clifcode

English: @clifcode:@steipete backup conversations nobody wants to remember. respect.

中文: @clifcode(中文):备份那些没人想记起的对话。respect。

@Peter_Soida

English: @Peter_Soida:@steipete feels like most of the value is actually in reducing uncertainty, not just catching people

中文: @Peter_Soida(中文):感觉大部分价值实际上在于减少不确定性,而不仅仅是逮到人。

@PangestuAden

English: @PangestuAden:@steipete age encryption is a solid choice here

中文: @PangestuAden(中文):age 加密在这里是很不错的选择。

@imgabrielonx

English: @imgabrielonx:@steipete modafinil?

中文: @imgabrielonx(中文):modafinil(一种提神药物)?

@MikeMagicHat

English: @MikeMagicHat:@steipete Very awesome but how about having a single backup service that can do X and WhatsApp then extending it for other sites too like facebook etc?

中文: @MikeMagicHat(中文):非常棒,但能不能做一个能同时备份 X 和 WhatsApp 的单一备份服务,然后再扩展到其他网站比如 Facebook 等?

@andrebaach

English: @andrebaach:@steipete Wohoooo good late evening

中文: @andrebaach(中文):耶,太好了,晚上好!

@aleks_todo

English: @aleks_todo:@steipete I know your secret 🤣 Bro just never sleeps. Nice work 🙏🏼

中文: @aleks_todo(中文):我知道你的秘密 🤣 兄弟就是从不睡觉。干得好 🙏🏼