与同步客户端配合——Markor 是离线应用,Syncthing / Dropbox / Nextcloud 是外挂
核心原则:Markor 不做云同步
Markor 的开发者在 README 和 NEWS 里反复强调:
Markor is and will stay an offline focused application.
Markor 不做云同步的原因是设计决策,不是技术限制——一个坚持「本地存储、纯文本、离线优先」的应用,自己做云同步会引入云服务依赖、账号体系、数据隐私问题,和它的三条原则直接冲突。
那怎么同步
因为 Markor 所有文件都是 标准纯文本(.md .txt .zim .org .adoc .csv 等),所以它可以和 任何能同步文件夹的客户端 无缝对接。Markor 项目 README 里明确推荐了以下几种:
| 同步客户端 | 类型 | 适用场景 | 推荐度 |
|---|---|---|---|
| Syncthing | P2P 去中心化 | 多设备之间点对点同步、无服务器依赖 | ⭐⭐⭐⭐⭐ |
| Dropbox | 商业云同步 | 已有 Dropbox 账号 | ⭐⭐⭐⭐ |
| Nextcloud | 自建云 | 自己有 Nextcloud 服务器 | ⭐⭐⭐⭐ |
| OwnCloud | 自建云 | OwnCloud 用户 | ⭐⭐⭐⭐ |
| Seafile | 自建云 | Seafile 用户 | ⭐⭐⭐⭐ |
| BitTorrent Sync | P2P | Resilio Sync 用户 | ⭐⭐⭐ |
| FolderSync | Android 专用同步 | 只在 Android 设备间同步 | ⭐⭐⭐ |
| Syncthing(Markor 推荐) | P2P | 所有场景 | ⭐⭐⭐⭐⭐ |
Markor 项目推荐 Syncthing 的原因:
- P2P 去中心化:不需要第三方服务器,数据从手机直接到桌面,不经过任何云中转
- 完全开源:和 Markor 同属自由软件生态
- Android / iOS / Windows / Linux / macOS 全覆盖
- 自动冲突合并:两边同时修改同一个文件时,Syncthing 按行合并(纯文本天然支持)
- 选择性同步:可以指定哪些目录同步、哪些不同步
用 Syncthing 同步 Markor 的完整流程
第一步:桌面端装 Syncthing
- macOS:
brew install syncthing或下载 DMG - Windows:下载 GUI 安装包
- Linux:
sudo apt install syncthing或sudo dnf install syncthing
配置:设一个固定的 工作目录(比如 ~/Markor-Notebook/),把它设为 Syncthing 的主同步目录。
第二步:手机端装 Syncthing
- F-Droid 里直接搜 Syncthing 安装(开源版)
- Google Play 有官方版,但有部分功能限制
第三步:配对设备
- 打开手机 Syncthing → 显示 设备 ID
- 打开桌面 Syncthing → 添加新设备 → 扫描手机的二维码或输入 ID
- 两边互相确认配对 → 建立信任关系
第四步:选同步目录
- 桌面 Syncthing:设
~/Markor-Notebook/为同步目录,和手机配对 - 手机 Syncthing:设 Markor Notebook 根目录 为同步目录(Settings → General → Notebook directory 里看到的那个路径)
第五步:等同步完成
第一次同步后:
- Markor Notebook 目录里的所有文件 → 自动同步到桌面
~/Markor-Notebook/ - 桌面端 vim / VSCode / Obsidian / Zim / Emacs 里的修改 → 自动同步回手机
同步纪律
规则一:不要两边同时改同一个文件
Syncthing 处理纯文本冲突是按行合并。但如果你在手机上改了 Markdown 文档的第 30 行、同时在桌面改了第 30 行(比如手机改了标题、桌面加了代码块),Syncthing 会生成 冲突副本(文件名加 .sync-conflict-时间戳)。
- 冲突副本里两份改动都会保留
- 手动打开冲突副本,选择保留哪部分、删掉哪部分
- 解决完删掉冲突副本即可
规则二:.app/snippets/ 默认不同步
Syncthing 默认忽略以 . 开头的隐藏目录。.app/snippets/ 是 Markor 的 Snippets 目录,默认是隐藏的。如果要同步 Snippets:
- 在 Syncthing 里找到同步目录 → 编辑忽略列表 → 移除对
.app/的忽略 - 或者把 Snippets 移到非隐藏目录(比如
snippets/)
规则三:不要同步太多隐藏目录
Markor 的隐藏目录包括 .app/、.zim/(Zim Wiki 内部状态文件)等。这些目录里的文件 Markor 自己会管理,同步反而可能带来不必要的冲突。建议:
.app/snippets/(可选同步).zim/(不同步,只同步.zim外面的笔记文件)
同步客户端不工作时的排查
| 现象 | 可能原因 | 解决 |
|---|---|---|
| 文件改了但桌面没看到 | 手机端 Syncthing 后台被杀 | 去系统设置把 Syncthing 设为不受限制、开机自启 |
| 只同步了部分文件 | Syncthing 忽略列表有问题 | 检查 ~/.local/state/syncthing/ignorepatterns |
| 冲突副本不断产生 | 两边同时改文件太频繁 | 约定:写 Markdown 在手机端,深度编辑在桌面端,不同时碰一个文件 |
| 新设备配对不上 | 手机/桌面网络不通 | 两边都检查是不是在同一个局域网,或分别开启各自的全局发现 |