DEV Community

fang xia
fang xia

Posted on

用 Git 管账本 5 年,我学到的关于数据长期存活的几件事

用 Git 管账本 5 年,我学到的关于"数据长期存活"的几件事

2019 年的 commit,今天还能读

前几天心血来潮,翻了一下账本仓库的 commit 历史:
commit a1b2c3d... 2019-08-12
2019/08/12 * "星巴克" "咖啡"
Expenses:Coffee:Shop 35.00 CNY
Assets:Checking这条记录 5 年前写的,今天依然能在任何文本编辑器里打开。任何手机 App、任何云服务倒闭,都不影响我读回自己的消费记录。
这不是什么技术信仰。纯粹是被锁过一次后的应激反应。

那次被锁数据的经历

2018 年,我用了三年的一个记账 App 决定关闭导出功能——除非你升级到 Pro。
当时我只想拿回自己的数据,不是要求什么特殊待遇。只是想导出 CSV,转到另一个工具。
结果是:

  • 导出功能藏在 Settings > Account > Data Export,点进去发现是 VIP 专享- 升级 Pro 需要续费一年- 即使续费,导出的格式是私有 JSON,没有任何文档说明字段含义- 客服回复"我们的格式是商业机密"我最后放弃了那些数据,重新开始记账。 从那以后我懂了:你不拥有放在别人服务器上的数据,哪怕它是"你的"记账记录。 ## 为什么选 plain text Plain text 不是什么新技术。ASCII 标准 1963 年就有了。 但它有一个所有"聪明格式"都做不到的事情:半个世纪后的任何设备,都能打开 .txt 文件。 那些试图"替代"它的格式?大部分早已消失:
  • .doc → .docx → .docx with new XML schema- 各种专有的记账格式 → 只要厂商倒闭,数据变成电子垃圾Plain text 能活 60 年,是因为它不依赖任何特定软件来解读。 ## Beancount + Git 的日常 现在我的账本长这样: 2024/08/04 * "超市" "采购" Expenses:Groceries 328.50 CNY Assets:WeChat- 搜索: grep "星巴克" ledger.beancount — 秒出所有咖啡消费- 统计: beancount ledger.balance -f ledger.beancount — 实时余额- 版本: git log --since="2024-01-01" --until="2024-12-31" — 年度所有修改- 备份: git push — 一个命令,所有历史同步到多台设备上次手误删了一条记录?git checkout HEAD~1 ledger.beancount。 想看看三年前的消费习惯?直接 checkout 那个日期的文件,依然能读。 这不是什么高深技术。这是把你的财务记录,当成代码一样管理。 ## 数据主权从"能导出"开始 这不是说 SaaS 不好。我依然用很多云服务。 但我的分层是这样的:
  • 核心数据(记账记录、长期笔记)→ 必须是 plain text + 开放格式- 工作数据(临时协作、短期项目)→ 可以用便利的工具- 娱乐数据(无所谓的东西)→ 去哪都行如果你问我这 5 年最大的收获是什么? 数据可移植性不是"备选项",是"必选项"。 你可以随时换工具。你的数据应该随时能跟着走。

Top comments (0)