用 GitHub Contents API 给移动端/本地应用做零成本版本化备份的完整方案,出自 老APK逆向复活方法论 工程的 GitHub 同步功能。

GitHub Contents API 关键约束

  • 上传:PUT /repos/{owner}/{repo}/contents/{path},body 为 message + content(base64)→ 201。
  • 覆盖已有文件必须带原文件的 sha(先 GET 拿 sha;404 = 不存在,直接新建)。
  • 请求头 User-Agent 必填,GitHub 拒无 UA 请求。
  • 认证用 fine-grained token:只勾目标数据仓 + Contents 读写,绝不复用推代码的大权限 token。
  • 每次备份天然是一个 commit,网页端可回滚任意版本——等于免费版本化备份后端。
  • 开发顺序:先用 curl 手工跑通全流程(PUT 201 → GET → 带 sha PUT 200 → DELETE 200),再写客户端代码。

SQLite 整库快照

  • 快照用 VACUUM INTO 'tmpfile'(一致性快照),失败兜底直接读 db 文件。
  • 恢复时必须先删 -journal / -wal / -shm 再替换 db 文件——否则残留 WAL 会把旧数据写回新库,这是恢复后数据”回到过去”的经典坑。
  • 恢复完杀进程重启(Process.killProcess(Process.myPid())),避免内存中的旧 DAO 缓存污染新库。

适用判断

适合单文件 ≤100MB、低频写入的个人数据备份(任务库、配置、生成产物)。不适合高频写、大文件、多端并发编辑的场景。

原始素材

  • playbook

相关页面