Kaede Akatsuki

中二病也要开发 Android

Notion 数据自动备份方案

最近我已经把自己的笔记系统迁移到 Notion 上面,相比过去十年间用过的为知笔记和有道云笔记,Notion 的自定义和自动化玩法显然要丰富许多,而且多个平台的客户端也做得不错(国产软件现在都是满屏的广告非常难受)。不过我总感觉 Notion 在数据同步和历史数据版本控制上做得比较搓。

比如我感觉我好像同步丢过几次数据,而且就算开了 Notion Pro 服务,Notion Page 的历史记录居然没有 diff 比对(这样很难看出不同历史记录之间的变更)。

因此我打算给 Notion Workspace 加上自动备份功能,用于防止数据丢失以及通过 git diff 查看不同备份快照之间的差异。

NotionUp

notion-up 是一个用来备份 Notion 数据的 Python Repo,主要功能是通过 Notion API 导出 Notion 的备份数据 exported.zip,配合 CircleCi 或其他持续集成服务,能够定期把 exported.zip 文件上传到 GitHub Releases 并把解压出来的 Notion 笔记内容提交到指定的 GitHub Repo。

备份 Notion 数据

通过以下命令可以备份指定 Notion Workspace 的数据并导出为 .zip 文件。(其中的 token_v2 的获取方式可以参考一下这个文档:notion_token_v2。)

1
PYTHONPATH=./ python main.py --token_v2 <token_v2>

配合 CircleCi 使用

搭配 CircleCi 等持续集成服务,可以实现定期自动备份 Notion 数据到 GitHub Releases 以及 GitHub 仓库。(详细配置可以参考一下:.config.yml。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
workflows:
backup-notion:
jobs:
- export-workspace
- publish-github-release:
requires:
- export-workspace
backup-notion-nightly:
triggers:
- schedule:
cron: "0 * * * *" # every hour
filters:
branches:
only:
- master

jobs:
- export-workspace
- publish-github-release:
requires:
- export-workspace

效果如下:
Notion 数据备份文归档

Notion 数据 git diff