如何用 Syncthing 同步多端 Obsidian

三端 Obsidian 同步教程:原理、安装、配置,以及同步和备份到底有什么不同。

ObsidianSyncthing知识管理

我的 Obsidian 笔记要在 Windows、macOS 和 Android 上都能随手改。官方 Sync 确实省事,但我想留一份完整的本地副本;Git 那套也考虑过,把每次改两个字都变成一次提交,我坚持不下来。最后三端同步交给了 Syncthing。

文末附了一段可以直接甩给命令行 Agent 的指令,桌面端那部分它能替你配掉。

Obsidian 仓库说到底就是个普通文件夹,Markdown、图片、附件、.obsidian 配置全在里面。所以多端用 Obsidian 这件事,本质上是让三台设备上的三个文件夹内容一致–Syncthing 干的就是这个。

配好之后是这样:

  • Windows 上新建一篇笔记,Mac 和手机会收到同一个 Markdown 文件。
  • 手机上补两句话,电脑端会收到这次修改。
  • 三台设备都保留完整本地副本,断网时照样可以打开和编辑。
  • 回到有网络的环境后,Syncthing 会继续传输没有同步完的变更。
  • 不需要把笔记先上传到某个网盘,也不需要把 Syncthing 的管理页面暴露到公网。

下面按“Windows 上已经有一套完整仓库,要同步到 Mac 和安卓手机”来写。主仓库在 Mac 上的,把 Windows 和 Mac 的角色对调,步骤一样。

一、Syncthing 同步原理

Syncthing 三端同步原理

Syncthing 不是云盘客户端,整套体系里没有一个必需的“中心网盘”。每台设备跑一个 Syncthing 实例,各自有一个设备 ID,只有互相接受过对方 ID 的设备才会建连。

传输时它把文件切成数据块算校验值,只传有变化的那部分。两台设备在同一个局域网里一般直连;跨网络时靠全局发现服务找到对方地址;NAT 或防火墙把直连堵死了,才退回 Relay 中转。

发现服务只负责告诉设备“去哪儿找对方”,笔记本身不经它保存。Relay 转发的是已经加密的流量,看不到明文。设备之间走 TLS,握手时还会核对设备 ID。

还有一件事得先说清楚:Syncthing 是同步工具,不是备份工具。在一台设备上删掉文件,删除动作照样会传到另外两台;改错了、插件抽风把文件写坏了,也会一并同步过去。后面会配上版本控制兜一层,但真正重要的笔记还是得有一份跟 Syncthing 无关的独立备份。

多端设备如何全部配对

最省事的结构是三台两两配对:

Windows ↔ Mac
Windows ↔ Android
Mac ↔ Android

这样任意两台同时在线就能直接同步,Windows 关机了,Mac 和手机之间照样传。

有人图省事只让 Mac 和手机各自连 Windows,把 Windows 当中转站。这也能跑,但 Windows 一关机,Mac 上写的东西就到不了手机,得等下次开机。多配一条边的成本只有半分钟,别省。

二、如何操作

1. 选定唯一的“初始主仓库”

第一次配置,只能认一台设备上的仓库为完整版本。这里假设它在 Windows:

D:\Notes\MyVault

Mac 和手机上的接收目录必须是空的。别提前在三台设备上各建一个同名仓库再让 Syncthing 去合并–两边都有内容、修改时间又对不上,第一次扫描就能给你刷出一堆 sync-conflict 文件,清起来很烦。

2. 先备份一次

先把 Obsidian 退干净(不是最小化到托盘,是真的退出),再把整个仓库复制一份或者打成压缩包。Windows 上在 PowerShell 里跑:

Terminal window
tar -a -c -f "$env:USERPROFILE\Desktop\MyVault-before-syncthing.zip" -C "D:\Notes" "MyVault"

路径换成你自己的。压缩包一定要放在仓库外面,放里面它会跟着同步到另外两台设备上去,手机那边平白多几百兆。

3. 停掉其他同步工具

一个 Obsidian 仓库只能交给一套同步服务。 如果这个目录之前在 OneDrive、iCloud、坚果云或者 Obsidian Sync 里,先把它移出来或者关掉对应的同步。两个引擎同时盯着一批文件写,出来的不是双保险,是成片的冲突副本和重复文件。

三、下载并安装三端客户端

截至 2026 年 7 月,Syncthing 主程序是 2.1.2。别去搜索引擎里翻下载站,一律从官方下载页进。

Windows:使用 Syncthing Windows Setup

用官方下载页列出的 Syncthing Windows Setup 就行,它顺带把登录启动和防火墙规则一起配了,省得自己去点。

安装时按这几项选:

  1. 下载最新安装程序并运行。
  2. 安装类型选“当前用户(Current User)”。普通个人电脑没有必要装成系统服务。
  3. 保留“登录时启动 Syncthing”的选项。
  4. 允许安装器创建 Windows 防火墙规则。
  5. Web GUI 监听地址保持 127.0.0.1,不要改成 0.0.0.0
  6. 完成安装后,浏览器会打开 http://127.0.0.1:8384/

桌面端的管理界面就是这个本地网页,没有别的客户端。左边一列是同步文件夹,右边是本机和远程设备。

Syncthing Web GUI

图:Syncthing 官方入门文档。当前版本的字段和基本布局一致。

第一次进去,先点右上角“操作(Actions)→ 设置(Settings)”把这几项改掉:

  • 在“常规(General)”里把设备名改成容易识别的名称,例如 Windows-Laptop
  • 在“GUI”里设置用户名和强密码。
  • GUI 地址仍保持 127.0.0.1:8384

macOS:使用官方 syncthing-macos

macOS 用官方托盘应用 syncthing-macos,它把后台进程、菜单栏图标和自动更新都管了。Syncthing 2 系列要求 macOS 12 起步,系统更老的先去发布页看兼容说明,别直接装。

图形方式安装:

  1. 下载最新 DMG。
  2. 打开 DMG,把 Syncthing 拖进“应用程序”。
  3. 第一次启动时,按 macOS 提示确认打开。
  4. 点击菜单栏的 Syncthing 图标,打开 Web GUI。
  5. 在偏好设置中打开“登录时启动(Launch at Login)”。
  6. 把设备名改成 MacBook,并为 Web GUI 设置用户名和密码。

装了 Homebrew 的话一条命令也行:

Terminal window
brew install --cask syncthing-app

一台设备只留一个 Syncthing 实例。 syncthing-macos、Homebrew 装的后台服务、再加一个手动下的二进制包同时跑起来,它们会抢 8384 端口和同一个配置目录,表现是 GUI 打开后配置时有时无、改完保存又被另一个实例覆盖回去。这个坑排查起来很费时间,装之前先确认机器上是干净的。

Android:安装 Syncthing-Fork

安卓端别装旧的官方 Syncthing App,那个已经停止维护了。现在用仍在更新的社区版 Syncthing-Fork

F-Droid 装最省心,后续更新自动走。当前版本 2.1.2.0,要求 Android 6.0 以上。没装 F-Droid 就去 GitHub Releases 下 APK,手动装的时候系统会拦一下,需要临时给浏览器或文件管理器开“安装未知应用”,装完再关掉。

第一次打开会走一遍欢迎向导,每页怎么选:

  1. 存储权限:点“授予权限”。Syncthing 必须能读写 Obsidian 仓库。
  2. 通知权限:点“允许”。常驻通知用于维持 Android 前台服务,也会显示设备连接和文件夹邀请。
  3. 电池优化:允许 Syncthing-Fork“不受限制”或“忽略电池优化”。项目文档明确说明,撤销这个权限可能导致后台同步停止。
  4. 位置权限:如果你要使用“只在指定 Wi-Fi 上同步”,就允许;如果不需要识别 Wi-Fi 名称,可以先跳过。
  5. 密钥生成:等待完成,不要中途强退应用。

向导走完,进左上角菜单的“设置”,还有几项要改:

  • 在“行为”里打开“自动启动”。
  • 在“运行条件”里打开“使用 Wi-Fi 时运行”。
  • “当设备由以下电源供电时运行”选“交流电源和电池电源”。
  • 第一次同步时先关闭“按时间表运行”,避免全量传输被切成很多小段。
  • 不想消耗流量,就关闭“使用移动数据时运行”和“漫游时运行”。
  • 如果手机厂商还有单独的后台管理,把 Syncthing-Fork 加入自启动、后台运行和省电白名单。

那条常驻通知不要嫌烦去关掉。 它是 Android 前台服务的凭证,通知一关,系统随时可能把进程回收,表现就是同步时好时坏、找不到规律。

Syncthing-Fork 常驻通知

图:Syncthing-Fork 项目官方截图。

四、先把三台设备两两配对

设备 ID 是一长串带短横线的大写字符,手输几乎必错。电脑和手机之间能扫码就扫码,两台电脑之间用复制粘贴。

1. Windows 与手机配对

在 Windows 的 Web GUI 里点“操作(Actions)→ 显示 ID(Show ID)”,会弹出设备 ID 和二维码。然后在手机上:

  1. 打开 Syncthing-Fork,切到“设备(Devices)”。
  2. 点右上角“添加设备”图标。
  3. 点设备 ID 输入框旁的扫码按钮。
  4. 扫描 Windows 屏幕上的二维码。
  5. 设备名称填 Windows-Laptop
  6. 保存。

等十几秒,Windows 的 Web GUI 顶部会冒出“新设备”提示。点“添加设备”,核对一下弹出来的 ID 和手机上那串一致,名称填 Android-Phone,保存。如果一直等不到提示,多半是两台设备不在同一个 Wi-Fi 下,或者防火墙把 Syncthing 拦了。

Syncthing 添加远程设备

图:Syncthing 官方入门文档。

2. Windows 与 Mac 配对

在 Mac 的 Web GUI 点“操作 → 显示 ID”,把设备 ID 复制下来,回到 Windows:

  1. 点右下角“添加远程设备(Add Remote Device)”。
  2. 粘贴 Mac 的设备 ID。
  3. 名称填 MacBook
  4. 保存。

保存后切回 Mac,接受 Windows 发来的新设备请求,把对方命名为 Windows-Laptop

3. Mac 与手机配对

同样的流程再走一遍:手机扫 Mac Web GUI 里的二维码,然后在 Mac 上接受手机的请求。

弄完三端都应该能看到另外两台设备。在线显示“已连接(Connected)”,对方关机或者休眠时显示“断开连接(Disconnected)”,这是正常的,不代表配置丢了。

Syncthing-Fork 设备列表

图:Syncthing-Fork 项目官方截图。

设备 ID 本身相当于公钥标识,不是登录密码。但公开发教程或截图时,仍建议打码,免得收到陌生设备请求。

五、在 Windows 创建 Obsidian 共享文件夹

配对只是打通了设备,仓库还没开始传。在 Windows Web GUI 点“添加文件夹(Add Folder)”,按这张表填:

项目 建议值
文件夹标签 Obsidian
文件夹 ID obsidian-vault
文件夹路径 D:\Notes\MyVault
文件夹类型 发送和接收(Send & Receive)
文件监视器 开启

切到“共享(Sharing)”页,把 MacBookAndroid-Phone 都勾上。再去“文件版本控制(File Versioning)”选“交错版本控制(Staggered File Versioning)”,界面里能设最大保留时间的话先填 90 天。保存。

文件夹类型这一项必须是“发送和接收”。“仅发送”是给只读发布源用的,“仅接收”是镜像节点,选错了的表现是手机上改的东西死活传不回电脑,而且界面上不会报错,只是安静地不同步。

六、在 Mac 接收仓库

Mac 的 Web GUI 顶部会弹“设备想要共享文件夹”,点“添加(Add)”,填接收路径:

/Users/<你的用户名>/Documents/MyVault

保存前把这几项核一遍:

  • 文件夹 ID 是 obsidian-vault,不要另起一个 ID。
  • 文件夹类型是“发送和接收”。
  • 路径指向空目录。
  • 在“共享”页同时勾选 Windows-LaptopAndroid-Phone
  • 文件版本控制同样选择“交错版本控制”。

保存后等状态变成“最新(Up to Date)”。首次同步期间别打开 Mac 上的 Obsidian,也别往接收目录里丢别的东西–Obsidian 一启动就会写 .obsidian 下的一堆配置,正好和传过来的文件撞上。

七、在手机接收仓库

手机会收到“某设备想要共享文件夹”的通知。点它,或者自己进 Syncthing-Fork 的“文件夹(Folders)”页处理这条邀请。

  1. 点“添加”或接受文件夹邀请。
  2. 文件夹标签保持 Obsidian
  3. 文件夹 ID 确认是 obsidian-vault
  4. 点路径旁边的文件夹按钮,打开 Android 系统目录选择器。
  5. 在内部存储的 Documents 下新建 MyVault 文件夹。
  6. 进入 MyVault,点“使用此文件夹”,再确认“允许”。
  7. 回到 Syncthing-Fork,确认它提示对该目录拥有读写权限。
  8. 文件夹类型选“发送和接收”。
  9. 勾选与 Windows、Mac 共享,保存。

推荐放在这个位置:

/storage/emulated/0/Documents/MyVault

别把仓库放进 /Android/data/ 或者某个 App 的专属目录里。卸载应用或者系统做清理的时候,这类目录会被连锅端掉,而且新版 Android 限制了第三方应用访问它们,Obsidian 那边未必授得了权。

首次同步让手机插着电、连着 Wi-Fi,Syncthing-Fork 保持在前台。仓库大一点的话这一步要跑十几分钟,文件夹页会显示文件数、体积和进度。

Syncthing-Fork 文件夹列表

图:Syncthing-Fork 项目官方截图。图中的路径只是界面示例,Obsidian 仓库按本文放在 Documents/MyVault

三端都显示“最新”之后再往下走。这一步没到位就打开 Obsidian,后面的冲突文件基本都是从这里来的。

八、让 Obsidian 打开同步完成的本地仓库

Mac

  1. 打开 Obsidian。
  2. 进入仓库切换器。
  3. 点“将文件夹作为仓库打开(Open folder as vault)”。
  4. 选择 Documents/MyVault

Android

  1. 打开 Obsidian。
  2. 进入“管理仓库(Manage vaults)”。
  3. 选择“将文件夹作为仓库打开”。
  4. 选择刚才同步好的 Documents/MyVault
  5. 如果系统询问目录访问权限,选择允许。

注意是“打开文件夹作为仓库”,不是“新建仓库”。在 Obsidian 里新建一个同名的空 MyVault,会在同一个位置搞出第二套 .obsidian,然后同步过去覆盖掉原来的配置。

九、.obsidian 到底要不要同步

主题、插件、快捷键和绝大部分设置都躺在 .obsidian 文件夹里,同不同步它是个取舍问题,两种做法都有人用。

做法 A:同步 .obsidian

好处是三端插件和设置一致,换设备不用重新配。代价是桌面端和移动端的窗口布局会互相覆盖–手机上打开一次,回到电脑发现侧边栏全乱了–另外只支持桌面的插件在手机上会报错。

我自己用的是这个方案,但把工作区布局文件排除掉。在每台设备上进 Obsidian 文件夹的“编辑 → 忽略模式(Ignore Patterns)”,填这几行:

(?d).DS_Store
(?d)Thumbs.db
(?d)desktop.ini
/.obsidian/workspace*.json

前三行挡掉 macOS、Windows 各自生成的杂项文件,最后一行让每台设备守着自己的界面布局。

这里有个容易漏的点:Syncthing 的 .stignore 本身不会同步。在 Windows 上填完不等于三端都生效,Mac 和手机上得各填一次,手机那边在文件夹的编辑页里。

做法 B:完全不同步 .obsidian

手机和电脑上的插件组合完全不同的,把这一行也加进三端的忽略模式:

/.obsidian

代价是主题、插件、快捷键、仓库设置全都不跨设备走,每台机器上要各配一遍。别一边排除整个 .obsidian,一边又指望插件自己出现在手机上。

十、版本控制怎么配才有用

版本控制是给“误改和误删会传播”这件事垫的一层缓冲,它替代不了备份。

Windows 和 Mac 上都要开“交错版本控制”。开了之后,某个文件从别的设备传进来覆盖本地旧版本时,接收端会先把旧文件挪进仓库里的 .stversions

两台电脑都要开,是因为 Syncthing 的版本控制按设备、按文件夹各自生效,不是集群共享一个版本库。只在 Windows 上开,Mac 那边被覆盖掉的内容照样找不回来。

手机存储紧张可以不开,历史版本留在两台电脑上就够了。这之外还得有一份真正独立的备份,比如每天把仓库同步到另一块磁盘或者带版本的对象存储–.stversions 和仓库在同一个目录树里,仓库整个没了它也一起没。

十一、按这个顺序验收

看到“已连接”不代表能用。花两分钟跑一遍增、改、删的完整流程:

  1. 在 Windows 的 Obsidian 新建 同步测试.md,写一行“来自 Windows”。
  2. 等 Mac 和手机都看到这个文件。
  3. 在手机上追加一行“来自 Android”。
  4. 等 Windows 和 Mac 收到修改。
  5. 在 Mac 上给文件重命名。
  6. 等另外两端名称一起变化。
  7. 删除这个测试文件。
  8. 确认删除传播,并在启用版本控制的电脑上检查 .stversions

同时盯这三个状态:

  • 文件夹显示“最新(Up to Date)”。
  • 远程设备显示“已连接(Connected)”。
  • “全局状态(Global State)”和“本地状态(Local State)”的文件数量、体积一致。

十二、最常见的故障

手机锁屏后就不再同步

按这个顺序查:

  1. Syncthing-Fork 的通知权限是否开启。
  2. 是否已忽略电池优化。
  3. App 内“设置 → 行为 → 自动启动”是否开启。
  4. “设置 → 运行条件 → 使用 Wi-Fi 时运行”是否开启。
  5. 手机系统是否把它设成了“限制后台活动”。
  6. 小米、华为、荣耀、OPPO、vivo 等系统的自启动和后台白名单是否放行。

设备一直显示“断开连接”

先把两台设备接到同一个 Wi-Fi 上,再确认双方接受了对方的设备 ID–只有一边加了另一边没确认,是最常见的原因。Windows 防火墙至少要放行 Syncthing 在专用网络上通信。

家里的普通网络不用一上来就折腾路由器端口映射。Syncthing 会先尝试直连,直连不通自动退回 Relay。Relay 比直连慢不少,传大附件时能明显感觉到,但流量仍然是加密的,不会变成明文。

文件夹显示“未共享”

进这个文件夹的“编辑 → 共享”,把设备勾上。设备配对成功和文件夹共享是两件事,配好设备不会自动共享任何文件夹。

手机提示目录只读

重新编辑文件夹路径,走 Android 的系统目录选择器进到目标目录,点“使用此文件夹”并允许读写。手写一个路径填进输入框是不行的–路径对,但没有 SAF 授权,Syncthing 照样写不进去。

出现 sync-conflict 文件

同一个文件在两台还没来得及互相同步的设备上都被改过,就会出这个。Syncthing 保留一个胜出版本,把另一个改名成这样:

笔记.sync-conflict-日期-时间-设备名.md

把两个文件都打开,手工合并,确认没丢东西再删冲突副本。网上有人写脚本批量清理 sync-conflict,别抄–那等于把还没看过的修改直接扔了。

显示“文件夹标记丢失(folder marker missing)”

Syncthing 会在共享目录里放一个 .stfolder 空目录当标记,手机清理工具最爱删它。标记没了 Syncthing 就停止同步–这是有意为之的保护,防止外置存储没挂载上时把整个仓库判定为“已删除”,再把删除同步给其他设备。

先确认这个目录确实还是原来那个 Obsidian 仓库,然后要么把 .stfolder 建回来,要么在 Syncthing 里移除该文件夹配置、用同一路径重新添加。看到报错先去删仓库内容是最坏的处理方式。

十三、关于 iPhone

Syncthing-Fork 只有 Android 版。iOS 对后台运行和共享目录的限制是另一套,Syncthing 至今没有官方支持的 iPhone 客户端,所以这套方案在 iPhone 上走不通。Windows、Mac 加 iPhone 的组合,我的建议是直接买 Obsidian Sync;纯苹果设备之间可以用 iCloud,但同一个仓库不要同时交给 iCloud 和另一套同步服务。

十四、让 Agent 帮你配置桌面端

本机能跑命令行 Agent 的话,下面整段可以直接粘过去,把尖括号里的路径换成自己的:

请帮我在当前电脑上配置 Syncthing,用来双向同步 Obsidian 仓库。
目标:
1. 识别当前系统是 Windows 还是 macOS。
2. 检查是否已经安装、启动了 Syncthing,是否存在重复实例;不要同时运行两个 Syncthing。
3. 如果未安装,只从 https://syncthing.net/downloads/ 推荐的入口安装:Windows 使用 Syncthing Windows Setup 的当前用户模式,macOS 使用官方 syncthing-macos;配置登录时自动启动。
4. Web GUI 只监听 127.0.0.1:8384,不得暴露到公网;提醒我设置 GUI 用户名和强密码。
5. 将设备名设置为容易识别的名称。
6. 使用现有 Obsidian 仓库路径:<这里填完整仓库路径>。操作前先确认目录存在,并在仓库外创建一份带日期的压缩备份。
7. 在 Syncthing 中创建或检查文件夹:标签 Obsidian,文件夹 ID 为 obsidian-vault,类型为 Send & Receive,开启文件监视器。
8. 在当前桌面端启用 Staggered File Versioning,建议保留 90 天。
9. 为该文件夹配置忽略规则:(?d).DS_Store、(?d)Thumbs.db、(?d)desktop.ini、/.obsidian/workspace*.json。
10. 检查 Windows 专用网络防火墙或 macOS 后台启动状态,但不要做路由器端口映射,不要开放 8384 到局域网或公网。
11. 显示本机设备 ID 的获取位置,完整设备 ID 不要写进日志、仓库或最终报告;需要配对时停下来让我扫码或提供另一台设备的 ID。
12. 配置完成后,验证 Syncthing 进程、自动启动、GUI 监听地址、文件夹路径、文件夹类型、版本控制和忽略规则,并给我一份 Windows/macOS/Android 三端配对与手机接收目录的剩余操作清单。
执行规则:先只读检查,再说明将要改什么;保留现有配置和用户文件。禁止删除仓库、覆盖现有 .env、关闭系统防火墙或混用其他同步服务。遇到已有同名文件夹、非空接收目录、多个 Syncthing 实例或路径不确定时,先停下来问我。

桌面端的安装、开机启动、文件夹配置和事后检查,Agent 能包掉。手机那边的权限确认、扫码配对和目录授权还是得自己点–这几步是 Android 的系统安全边界,也没必要想办法绕过去。

参考资料