数据永远在自己手里-1
title: "数据永远在自己手里:备份就是复制一个文件" date: 2026-09-17 tags: [数据主权, 自部署, SQLite, 备份] category: 快速上手 description: "你的博客数据不是锁在某个 SaaS 平台里的。它是你服务器上的一堆文件,随时可以复制、迁移、备份。"
数据永远在自己手里:备份就是复制一个文件
用过 SaaS 博客平台的人都有过这种焦虑:
- 平台会不会倒闭?
- 会不会突然涨价?
- 导出格式是不是专有的?
- 我的内容是不是在帮平台打工?
这种焦虑不是多余的。 Google Reader 关了,Tumblr 几经转手,Medium 越来越商业化。你在平台上写的内容,本质上不属于你。
爱库录的数据长什么样
data/
├── aiklog.db # SQLite 数据库
├── aiklog.db-wal # WAL 日志
└── aiklog.db-shm # 共享内存
blog/
├── 关于/
│ └── 这个博客是怎么搭的.md
├── 技术/
│ ├── Go并发模式实战笔记.md
│ └── Docker多阶段构建实战.md
└── ...
两种数据,两种备份方式:
Markdown 文件
你的文章就是 .md 文件。可以用任何方式备份:
# 复制
cp -r blog/ /backup/blog/
# rsync 增量同步
rsync -av blog/ /backup/blog/
# Git 版本管理
cd blog && git add . && git commit -m "backup" && git push
SQLite 数据库
索引、配置、用户数据、标签、向量——都在一个 .db 文件里。
# 备份数据库
cp data/aiklog.db /backup/aiklog-$(date +%Y%m%d).db
# 或者用 SQLite 的在线备份(不锁库)
sqlite3 data/aiklog.db ".backup '/backup/aiklog.db'"
备份就是复制文件。 不需要 mysqldump,不需要导出工具,不需要停服务。
恢复
# 把备份文件复制回来
cp /backup/aiklog.db ./data/aiklog.db
cp -r /backup/blog/ ./blog/
# 启动服务
./aiklog -addr 127.0.0.1:8780 -db ./data/aiklog.db
恢复也是复制文件。 分钟级完成。
迁移
换服务器?换系统?
# 在旧服务器上打包
tar czf aiklog-backup.tar.gz data/ blog/
# 传到新服务器
scp aiklog-backup.tar.gz new-server:~/
# 在新服务器上解压并启动
tar xzf aiklog-backup.tar.gz
./aiklog -addr 127.0.0.1:8780 -db ./data/aiklog.db
整个博客 5 分钟内迁移到新服务器。
为什么选 SQLite
很多人问:为什么不用 MySQL / PostgreSQL?
| | MySQL/PostgreSQL | SQLite | |---|---|---| | 安装 | 需要单独安装配置 | 无需安装,内嵌 | | 备份 | mysqldump / pg_dump | 复制一个文件 | | 迁移 | 导出/导入/版本兼容 | 复制一个文件 | | 运维 | 需要管理进程、用户、权限 | 无需运维 | | 性能 | 高并发强 | 单机足够 |
对于个人博客,SQLite 的优势远大于它的局限。 单机部署、简单备份、零运维——这些才是个人博客真正需要的。
如果你需要多人协作、高并发,SQLite 不是最佳选择。但对于 99% 的个人博客场景,它完全够用。
数据格式的可迁移性
Markdown
Markdown 是纯文本。任何编辑器都能打开,任何系统都能导入。不存在「格式锁定」的问题。
未来不想用爱库录了?你的 .md 文件可以直接导入 Hugo、Hexo、Obsidian、Notion——几乎所有知识管理工具都支持 Markdown。
SQLite
SQLite 是世界上部署最广泛的数据库。数据在 .db 文件里,可以用任何 SQLite 工具读取、查询、导出。
# 用命令行查看数据
sqlite3 data/aiklog.db "SELECT title, slug FROM articles;"
# 导出为 CSV
sqlite3 -header -csv data/aiklog.db "SELECT * FROM articles;" > articles.csv
# 导出为 JSON
sqlite3 -json data/aiklog.db "SELECT * FROM articles;" > articles.json
你的数据不是锁在专有格式里的。 它在标准文件格式里,随时可以导出、迁移、转换。
一句话总结
你的内容是你写的,数据应该在你手里。
不是信任某个平台不会倒闭,而是即使平台倒了,你的内容也不会丢。
这才是「自部署」的真正意义。
相关:
[[13MB 单二进制:一条命令跑起博客]]— 了解如何部署。