我日常的工作和写作环境是这样的:
- Windows 上,用 Obsidian 写笔记、整理知识库,以及查看 pdf、word、EPUB 格式的文档。
- Linux 上,做代码开发,使用 AI 批量处理文档。
同一份文档,有时候我在 Windows 下写完,过几天又需要在 Linux 下继续用。文件少的时候,拷贝一下还能应付。一旦文档、代码多了,就很容易漏文件、导致文件更新不及时或者前几天新改的代码觉得不好用再回退代码没有版本记录。
我也尝试过用 Syncthing 这类同步工具,把重要的代码和笔记在多台设备之间同步。但很容易出现冲突和 0 字节文件。我需要每周花一些时间处理这些问题。
我重新想了下我真正想要的是什么?
- 在 Windows 和 Linux 之间 随时能接着用,使用尽量做到 无感 备份
最近我的朋友我推荐了 Gitea 工具,它很好的解决了我的以上问题。Gitea 是一个自托管的、轻量级的 Git 开源工具,可以认为它是「私有版的 Github」。大多数人用来管理代码,其实转换一下思路,文档和笔记也可以当做 git 仓库来管理。
所以同步思路调整为:以 Gitea 为中心,让 Windows 和 Linux 都只和它同步 。即 Gitea 作为服务端,Windows / Linux 都是客户端。具体如下图所示。
这篇文章不讲具体配置细节,只分享备份思路:
如何使用 Gitea,将代码、文档和笔记,在不同系统上(Windows 和 Linux)优雅地同步?
说明:Github 是一个云端公共代码托管平台。
1 为什么选 Gitea
相比其他同步方案,Gitea 有几个点:
版本管理Obsidian 的笔记以 Markdown 纯文本为主,适合用 Git 管理。每一次增删改查版本历史都可回溯。
数据完全在自己手里笔记中往往包含很多思考、生活账号等个人信息,放在自己的 Linux 服务器上更安全。
轻量,易于维护Gitea 是一个几 MB 的二进制文件就能跑起来,资源占用极低,推送和拉取速度极快,长期运行几乎零成本。
SSH 让连接更丝滑通过 SSH 密钥对,客户端访问 Gitea 就不再需要反复输入密码,自动化流程也能跑得很顺。
2 整体同步架构
Windows 和 Linux 都不直接互相通信,它们只通过 Gitea 作为中枢。
- Linux
- Windows
- 值得注意的是,Obsidian 软件在打开的时候才会同步,如果关着电脑或者是软件不会触发同步。
- 通信方式
3 写在最后
这套方案不追求实时同步,Windows / Linux 每小时一次的自动同步,已经足够覆盖我的写作与开发节奏,也让系统长期保持简单、可靠。
之后我会分享如果将这套思路落地,包含如何在 Linux 上轻量化部署 Gitea;以及 Windows 侧的 Obsidian,如何通过 Git 插件 + SSH,做到几乎无感的免密同步。
4 相关链接
用 Gitea 搭建本地 Git 服务