Obsidian 同步方案之 Syncthing

Remotely Save 同步 Obsidian 是最简单的免费同步方案,但是使用久了会感受到它的边界:每次打开 Obsidian 才能触发同步,两台设备之间切换的间隙,笔记库未必是最新的;云服务的授权令牌偶尔悄悄失效,等你发现时同步可能已经中断好几天;免费版空间上限取决于所绑定的网盘,仓库一大就捉襟见肘;更关键的是,Remotely Save 只有一个全局同步开关,你没办法对不同的文件夹设置不同的同步方向——比如让主仓库从电脑单向推到手机,同时让某个特定文件夹在两端自由双向流动。

Syncthing 解决的正是这些问题。它是一个开源的 P2P 文件同步工具,设备之间直接建立加密连接,文件从不经过任何第三方服务器,没有账号、没有订阅、没有会过期的令牌。同步发生在操作系统层面,不依赖 Obsidian 是否处于打开状态,等你拿起手机打开 App,笔记早已是最新版本。局域网内的同步速度完全是本地网络的速度,理论上没有存储空间限制,因为文件只存在于你自己的设备上。

本文从最基础的全库双向同步讲起,先以 Windows 端和 Android 端跑通核心同步,再逐步引入更精细的进阶方案,最后补充 macOS 和 iOS 端的适配说明、冲突处理与版本控制等高级设置。无论你是第一次搭建 Syncthing,还是已经在用但想优化同步策略,应该都能在对应的章节找到所需内容。


目录

  1. Syncthing 是什么
  2. 为什么从 Remotely Save 切换到 Syncthing
  3. 前提条件与准备工作
  4. 在 Windows 端安装 Syncthing
  5. 在 Android 端安装 Syncthing-Fork
  6. Windows 端开机自启配置
  7. Web 界面安全设置
  8. Android 端 Syncthing-Fork 初始设置
  9. 添加远程设备
  10. 五种同步模式
  11. 基础方案:全库双向同步
  12. 进阶方案一:主仓库单向同步(电脑→手机)
  13. 进阶方案二:主仓库单向 + 速记文件夹双向
  14. 进阶方案三:以主力手机为中心的拓扑同步
  15. .obsidian 配置文件夹同步
  16. 冲突文件处理
  17. 文件版本控制
  18. 在 macOS 端安装与配置 Syncthing
  19. 在 iOS 端配置 Syncthing
  20. iOS 端初始配置要点
  21. 常见问题与排查
  22. 与 Obsidian 插件联动
  23. 参考资源

1. Syncthing 是什么

Syncthing 是一款开源的去中心化文件同步工具,自 2013 年起持续开发,目前由开源社区维护。2025 年 8 月发布的 2.0 版本是项目自创立以来的首个大版本更新,将底层数据库从 LevelDB 迁移到 SQLite,并引入了多连接并发传输机制,稳定性与性能都有显著提升。截至 2026 年 4 月 30 日,Syncthing 最新稳定版本为 2.0.16。它的核心逻辑非常直接:在你的设备之间建立加密的 P2P 连接,把文件直接从一台机器同步到另一台,不经过任何第三方服务器。

对于 Obsidian 用户而言,Syncthing 有几个特性值得特别关注。

同步发生在 Obsidian 之外。 Syncthing 是操作系统层面的后台进程,只要设备开机、Syncthing 在运行,同步就在持续进行,不需要 Obsidian 处于打开状态。当你拿起手机打开 Obsidian 时,笔记早已完成更新,无需等待任何触发。

数据主权完整。 文件从不经过任何第三方服务器,所有笔记只存在于你自己的设备之间。不需要注册账号,没有后台服务访问你的文件,隐私边界非常清晰。局域网内同步完全不出互联网,跨网络时中继服务器也只做流量转发,无法读取被端对端加密的内容。

精细的同步方向控制。 每个同步文件夹都可以独立配置同步类型:完全双向、仅发送、仅接收,以及带不同删除策略的变体。这是 Syncthing 在 Obsidian 同步场景中优于插件方案的关键——你可以精确控制哪个文件夹往哪个方向流动数据,而不是被迫接受一个全局开关管所有内容。

局域网优先,互联网作为补充。 当两台设备在同一局域网内时,Syncthing 会直接建立本地连接,同步速度即是局域网速度,非常快。在不同网络时,Syncthing 使用中继服务器穿透 NAT,仍然可以完成同步,连接依然是端对端加密的。

Syncthing 2.0 的主要变化。 如果你已经是 Syncthing 的老用户,2.0 带来了几个值得关注的改进:两台 2.0 设备之间现在默认建立多条并行连接(一条专用于索引元数据交换,两条用于文件数据传输),大文件传输时不再阻塞索引同步,整体效率明显提升;同步连接改用现代的 Ed25519 密钥体系;GUI 中新增了「限制局域网带宽」选项,如果你不希望 Syncthing 在传输大量笔记附件时占满本地网络带宽,可以在这里设置上限;数据库中被删除的条目现在默认 6 个月后自动清理(此前是永久保留),可在高级设置中调整或关闭;旧版本用于检测数据移位的「滚动哈希」机制已被移除,这让日常扫描和同步速度更快。此外,CLI 命令语法有重大调整,所有长选项从单破折号改为双破折号(例如 -home 必须写为 --home),--device-id 等参数也改成了子命令形式(syncthing device-id)。

⚠️ 注意 Syncthing 需要至少两台设备同时在线才能同步。如果电脑关机了,手机上新写的笔记会在下次电脑开机、Syncthing 恢复运行后才同步过去。如果你有一台始终在线的设备(如 NAS 或家用服务器),也可以作为中转节点,这属于更进阶的部署方式,本文不作展开。


2. 为什么从 Remotely Save 切换到 Syncthing

如果你已经在用 Remotely Save,这一节可以帮助你更清楚地判断是否值得切换,以及 Syncthing 能解决哪些具体的痛点。

同步稳定性。 Remotely Save 依赖 Obsidian 打开来触发同步,且同步进程与云服务 API 调用绑定,OAuth 令牌过期、网络抖动、云服务端限速都可能导致同步悄悄中断,你可能好几天后才发现两端已经不一致。Syncthing 运行在操作系统层面,不依赖 Obsidian 是否打开,连接逻辑完全由自己管理,稳定性更高。

同步速度。 Remotely Save 的速度上限是云服务 API 的上传/下载速率,且每次同步都需要与远端服务器握手。Syncthing 在局域网内直连时是纯本地网络速度,大仓库的初次同步和日常增量同步都快得多,切换设备时几乎感受不到等待。

存储空间。 Remotely Save 免费版的可用空间取决于绑定的网盘账号。以 OneDrive 为例,个人免费版仅有 5GB;InfiniCLOUD 的免费账号提供 20GB 存储空间,在「My Page」的「Enter Friends Referral Code」处输入一个有效的邀请码,可以获得永久 +5GB 的额外空间,使免费总量达到 25GB——即便如此,仓库持续增长后依然存在上限压力。Syncthing 文件只存在于你的设备上,理论上没有额外的存储空间限制,仓库有多大,设备有多少空间,就能同步多大。

隐私保护。 Remotely Save 的所有文件都会经过第三方云服务器(即使是自建 WebDAV 也需要信任中间环节)。Syncthing 文件从不离开你的设备网络,局域网内完全不出互联网,跨网络时中继服务器也只做转发、无法读取内容。如果隐私是你的首要考量,Syncthing 是更彻底的方案。

同步粒度。 这是 Remotely Save 与 Syncthing 之间最本质的差距。Remotely Save 只有一个全局同步开关,无法对仓库内的不同文件夹设置不同的同步方向。Syncthing 可以让每个文件夹独立配置:主仓库从电脑单向推到手机,速记文件夹在两端双向流动,.obsidian 配置文件夹可以完全独立处理,互不干扰。

当然,Syncthing 并非没有代价。它的配置比 Remotely Save 更复杂,需要在每台设备上安装客户端,首次设置需要一定的耐心。如果你的主要需求是简单地在两台设备间保持同步,而不在意细粒度控制,Remotely Save 的门槛更低。但如果你已经遇到了上述任何一个痛点,Syncthing 值得花时间搭建。


3. 前提条件与准备工作

在正式开始之前,需要确认以下几项。

操作系统。 本文电脑端重点展开 Windows 和 macOS 两个平台,各自均提供完整的安装与自启配置说明;移动端涵盖 Android(使用 Syncthing-Fork)与 iOS(使用 Möbius Sync 或 Synctrain)两个平台。

下表是各平台的客户端选择速览:

平台推荐客户端获取渠道
Windows官方压缩包(syncthing.exesyncthing.net/downloads 或 GitHub Releases
AndroidSyncthing-ForkF-Droid / Google Play
macOS官方原生应用(syncthing-macosGitHub Releases 或 brew install --cask syncthing-app
iOSMöbius Sync 或 SynctrainApp Store

💡 说明(多平台组合建议) 如果你的主力工作流是“Windows 端写作 + Android 端随身查看”,可以先按本文前半部分完成基础同步,再把 macOS 端当作第二台桌面机补进来,把 iOS 端当作移动接收端。这样的顺序最稳:先跑通 Windows ↔ Android,再复用同样的 Syncthing 设备关系扩展到 macOS / iPad / iPhone,最后再按需要调整单向或双向策略。

⚠️ 注意(iOS 平台限制) iOS 端的 Syncthing 客户端受 Apple 沙盒机制限制,无法像 Android 那样持续在后台运行,同步只能在 App 处于前台或获得短暂后台时间时进行。这是 iOS 平台的系统级限制,与具体 App 无关。详见第 19 节。

网络。 初次配对时,两台设备在同一局域网内最为方便,自动发现更顺畅;日常使用时只要设备能联网即可,Syncthing 会自动选择最优连接路径。

Obsidian 仓库状态。 本文假设你的仓库已在电脑端正常使用,同步的目标是将其推送到移动端或在多端之间保持同步,而非从零建库。

基本的文件管理能力。 配置过程中需要找到仓库文件夹的路径、在正确位置创建文件等操作。如果不确定仓库路径,可在 Obsidian「设置 → 关于」页面查看「仓库路径」字段。


4. 在 Windows 端安装 Syncthing

4.1 下载方式的选择

Syncthing 在 Windows 上有几种存在形式,建议使用官方压缩包。Syncthing 官方下载页也提供了 Syncthing Windows SetupSyncTrayzor v2 等集成方案;如果你只想要最少依赖、最稳定的基础方案,官方压缩包依然是优先选择。Syncthing 官方下载页也提供了 Syncthing Windows SetupSyncTrayzor v2 等集成方案;如果你只想要最少依赖、最稳定的基础方案,官方压缩包依然是优先选择。

官方压缩包是本文推荐的方式,也是最简洁稳定的路线。前往 Syncthing 官方下载页(syncthing.net/downloads)或 GitHub Releases 页面,下载适合你系统的压缩包,大多数现代 Windows 电脑选择 syncthing-windows-amd64 版本即可。下载后解压,将整个文件夹放到你习惯存放软件的位置,不需要任何安装操作,解压即用。

⚠️ 注意(Windows ARM 用户) 由于 Syncthing 2.0 引入了 SQLite 依赖,而 SQLite 与 Windows ARM 平台的交叉编译存在技术难题,官方预编译包目前不再提供 Windows ARM 版本。Windows ARM 用户如需使用 2.0 及以后的版本,需要从源代码自行编译。如果你使用的是 ARM 架构的 Windows 设备(例如基于高通骁龙的 Surface 或 Copilot+ PC),建议在官方 GitHub 跟踪相关 Issue 的最新进展。

SyncTrayzor 曾经是 Windows 用户最主流的第三方壳子,提供托盘图标、内置浏览器界面等便利。但需要注意:SyncTrayzor 的原始项目已于 2025 年 8 月由原作者归档停止维护,且与 Syncthing 2.0 存在兼容问题。目前社区有一个由 GermanCoding 维护的延续版本,功能基本可用,但长期维护状态尚不明朗。

💡 说明 本文使用官方压缩包 + Windows 任务计划程序的方式实现后台运行与开机自启。这套方式不依赖任何第三方壳子,长期稳定性更高,配置完成后无需再关注第三方项目的维护状态。

⚠️ 注意(Syncthing 2.0 升级提示) 如果你已有旧版 Syncthing(1.x)并计划升级到 2.0,首次启动时会触发一次数据库迁移(从 LevelDB 迁移至 SQLite)。仓库文件越多,迁移耗时越长,在大型仓库上可能需要数分钟。迁移期间请勿强制关闭程序,等待迁移完成后再正常使用。

4.2 首次启动与访问 Web 界面

将解压后的文件夹放置到目标位置后,双击 syncthing.exe 启动程序。

⚠️ 注意(Windows 特有行为) 第一次启动时,程序只会弹出一个命令行窗口输出初始化信息,并不会自动打开浏览器。关闭这个窗口,然后重新双击一次 syncthing.exe,这次才会自动跳转到 Web 界面。

如果没有自动跳转,或之后需要手动访问,在浏览器地址栏输入以下地址之一均可:

http://127.0.0.1:8384/

http://localhost:8384/

能正常看到 Syncthing 的 Web 界面,说明程序已在运行。

💡 说明(Windows 集成方案) 如果你更喜欢带托盘图标、文件夹联动和启动器的一体化体验,可以从 Syncthing 官方下载页选择 Syncthing Windows SetupSyncTrayzor v2;如果你更希望完全按照本文的方式掌控启动参数、后台行为与任务计划程序,继续使用官方压缩包即可。


5. 在 Android 端安装 Syncthing-Fork

Android 平台上推荐使用 Syncthing-Fork,而非官方的 Syncthing Android 应用——官方 Android 应用已宣告不再积极维护,并已从 Play 商店下架。Syncthing-Fork 是社区持续更新的分叉版本,功能更完整,对新版 Android 的适配也更好。

下载渠道有以下几种,任选其一:

  • F-Droid:开源软件平台,提供独立构建的 APK,推荐注重隐私的用户使用。实际版本号会随发布页更新,建议直接以 F-Droid 当前显示的最新构建为准。
  • Google Play 商店:搜索「Syncthing-Fork」,支持自动更新。
  • GitHub Releases:前往 Syncthing-Fork 的 GitHub 页面手动下载 APK。
  • Obtainium:如果你使用 Obtainium 管理 Android 应用更新,可以直接通过 GitHub 仓库地址订阅 Syncthing-Fork 的发布,实现自动追踪最新版本,无需手动检查。

⚠️ 注意(GitHub 仓库地址变更) 原 Syncthing-Fork 主要维护者 Catfriend1 的公开 GitHub 仓库在 2025 年末已不可访问。该项目目前由社区接续维护,F-Droid 上发布的版本源码在 github.com/researchxxl/syncthing-android,Google Play 渠道由 nel0x 继续维护。应用名称与包名(com.github.catfriend1.syncthingfork)保持不变,用户无需重新安装,功能也未中断。

渠道当前源码地址
F-Droidgithub.com/researchxxl/syncthing-android
Google Playgithub.com/nel0x/syncthing-android-gplay
历史版本(Catfriend1 v1/v2 旧版)github.com/Catfriend1/syncthing-android/releases(仍可访问旧版 APK)

安装完成后,第一次打开时会请求相关权限,存储访问权限是必须授予的,否则无法访问仓库文件夹;忽略电池优化权限也建议授予,可防止后台同步被系统限制。按提示逐一授权即可。

对于 Android 15 及以上系统的用户,除了在 Syncthing-Fork 内部设置外,还需要在系统设置中进行额外调整:在电池优化设置中将 Syncthing 设为「不优化」,在应用信息中锁定后台运行,并授予应用「不受限制的数据访问」权限。此外,建议保持 Syncthing 的持久通知可见——这个通知告知 Android 系统该应用需要保持后台运行,隐藏通知可能导致系统在内存不足时优先终止 Syncthing。

💡 说明(Syncthing-Fork 升级到 v2 的注意事项) 如果你的设备上已安装较旧的 Syncthing-Fork(1.x 版本),升级到 v2 版本时,应用会在首次启动时执行一次数据库迁移。升级前建议先导出应用配置并备份仓库数据;迁移过程中不要强制关闭应用,等待进度完成后再正常使用。


6. Windows 端开机自启配置

默认情况下,Syncthing 需要每次手动双击启动,且命令行窗口无法关闭(关了程序就停了)。通过 Windows 任务计划程序,可以让 Syncthing 在登录时自动以后台方式启动,不显示任何窗口。

第一步:打开任务计划程序。 按下 Win + R,输入 taskschd.msc,回车。

第二步:新建任务。 在左侧栏点击「任务计划程序库」,在右侧任务列表空白区域右键,选择「新建任务 (C)」。

第三步:常规设置。 在「名称」字段填写 Syncthing;勾选下方的「使用最高权限运行 (I)」。

第四步:触发器设置。 切换到「触发器」选项卡,点击「新建 (N)」,在「开始任务」下拉菜单中选择「登录时」,确认保存。

第五步:操作设置。 切换到「操作」选项卡,点击「新建 (N)」。操作类型保持默认「启动程序」;点击「浏览 (R)」,找到你解压的 syncthing.exe 文件,选中;在「添加参数(可选)」字段输入:

--no-console --no-browser

--no-console 表示不显示命令行窗口,--no-browser 表示启动后不自动打开浏览器。两个参数一起使用,Syncthing 就会安静地在后台运行。确认保存。

第六步:条件设置。 切换到「条件」选项卡,将「电源」区域下的「只有在计算机使用交流电源时才启动此任务」取消勾选,防止笔记本使用电池时 Syncthing 不启动。点击确认完成创建。

验证: 重启电脑,登录后在浏览器访问 http://127.0.0.1:8384/,能正常打开 Syncthing 界面即表示配置成功。也可以在任务计划程序中找到名为 Syncthing 的任务,其状态应显示为「正在运行」。

💡 说明 如果电脑联网正常,但浏览器无法访问 Syncthing 界面,大概率是 Syncthing 尚未启动。可以前往任务计划程序,右键点击 Syncthing 任务,选择「运行 (R)」手动触发一次。


7. Web 界面安全设置

Syncthing 的 Web 管理界面默认没有任何密码保护。本地访问风险有限,但设置密码是推荐做法,尤其是如果你将来计划在局域网中从其他设备访问这个界面。

在 Syncthing Web 界面右上角,点击「操作」→「设置」,进入设置对话框。

「常规」选项卡: 将「设备名」修改为方便识别的名称,例如按电脑型号或用途命名(「主力笔记本」「书房台式机」等)。设备名只用于在 Syncthing 界面中显示,不影响实际同步。

「GUI」选项卡: 填写「GUI 身份验证用户」和「GUI 身份验证密码」,并勾选「使用 HTTPS 连接到 GUI」。保存后,下次访问界面时需要输入用户名和密码,地址也会变为 https://。浏览器可能提示证书不受信任——这是自签名证书的正常情况,选择「继续访问」即可。

💡 说明(Syncthing Manager 插件的 HTTPS 限制) 如果你后续计划安装本文第 22 节介绍的 Syncthing Manager 插件,需要注意:Obsidian Mobile 无法连接使用自签名 HTTPS 证书的本地服务。若要在手机端 Obsidian 中使用该插件,需要在 Syncthing 的 GUI 设置中将 HTTPS 关闭,改用纯 HTTP(http://127.0.0.1:8384/)。由于地址被限制为本机回环地址,安全性仍有保障。


8. Android 端 Syncthing-Fork 初始设置

打开 Syncthing-Fork,点击左上角的汉堡菜单图标,在左侧菜单底部点击设置按钮,进入应用设置。

关闭省电限制。 在「运行条件」→「Battery」区域,找到「遵循 Android 省电模式」,将其从默认的开启改为关闭。Android 的省电模式会在后台限制应用的网络和 CPU 使用,关闭此选项可确保 Syncthing-Fork 后台正常运行同步任务。

开启自动启动。 在「行为」区域,找到「自动启动」,将其从默认的关闭改为开启。这样手机重启后 Syncthing-Fork 会自动启动,无需手动打开。

设置完成后,同样建议通过 Syncthing-Fork 左侧菜单的「Web GUI」入口进入 Web 界面,按照上一节的说明完成设备名和密码的设置。

💡 说明(Syncthing-Fork 的按文件夹同步条件) Syncthing-Fork 提供了一项在原生 Syncthing 中没有的实用功能:可以为每个文件夹单独设置同步触发条件,例如仅在 Wi-Fi 下同步、仅在充电时同步等,这些条件可以按文件夹分别配置,而不是对所有文件夹使用同一套规则。对于 Obsidian 用户而言,如果你将仓库分成了主仓库和速记文件夹两个同步通道,可以为速记文件夹配置「始终同步」,为主仓库(附件较多、体积较大)配置「仅 Wi-Fi 下同步」,从而在流量受限的环境下平衡同步及时性与流量消耗。相关设置在 Syncthing-Fork 的文件夹详情页内,点击「同步条件」即可找到。

💡 说明(Android 系统层面的额外设置) 以上仅完成了 Syncthing-Fork 内部的设置。为确保在 Android 15 及以上系统中稳定后台运行,还需要在手机的系统设置中完成以下操作:

  1. 进入「设置 → 应用 → Syncthing-Fork → 电池」,将电池使用策略设为「不优化」或「无限制」;
  2. 在同一页面中,确保「允许后台活动」或类似选项已开启;
  3. 如果手机有「应用锁定」功能,将 Syncthing-Fork 锁定在最近任务列表中,防止被系统自动清理;
  4. 保持 Syncthing 的持久通知可见,不要通过系统设置隐藏该通知——这个通知是 Android 判断应用需要保持后台运行的重要依据。

9. 添加远程设备

Syncthing 需要手动完成设备之间的互相认证,两台设备互相知道对方的 Device ID 之后,才能建立同步关系。这一步是一次性操作,配置好后不需要重复。

第一步:获取两台设备各自的 Device ID。 在电脑端 Syncthing Web 界面右上角,点击「操作」→「显示 ID」,会弹出一个包含长串字母数字代码和二维码的对话框,这就是这台设备的 ID。在移动端,打开 Syncthing-Fork,通过左侧菜单进入「Web GUI」,同样在「操作」→「显示 ID」中查看。iOS 端的 Möbius Sync 或 Synctrain 同理,在 App 内找到「Web GUI」入口,进入后在「操作 → 显示 ID」查看,或在 App 主界面直接显示本机 Device ID。

第二步:在电脑端添加手机。 在电脑端 Web 界面右下角,点击「添加远程设备」按钮。在弹出的对话框中,查找「附近的设备」区域——如果两台设备在同一局域网内,手机的 ID 通常会自动出现在这里。点击对应 ID 将其填入「设备 ID」字段,在「设备名」下方填写方便识别的名称(如「我的手机」),点击「保存」。

第三步:手机端同意连接。 保存后不久,手机端的 Syncthing-Fork 会弹出连接请求,提示有新设备请求连接。点击「同意」,两台设备就成功建立了对等关系,之后就可以开始配置文件夹共享了。

💡 说明 如果手机端没有收到连接提示,可以在手机端 Syncthing-Fork 中同样点击「添加远程设备」,手动填入电脑端的 Device ID,主动发起连接请求。两端只需要有一端先发起,另一端同意即可。如果同一局域网内自动发现失败,改为手动输入 Device ID 即可解决。

💡 说明(iOS 端配对注意事项) iOS 端的 Möbius Sync 或 Synctrain 在配对时,需要确保 App 处于前台运行状态,否则 iOS 可能不会及时处理来自其他设备的连接请求。配对时建议将 iOS 设备保持在前台,完成认证后再锁屏。


10. 五种同步模式

Syncthing 的精髓在于每个同步文件夹可以独立配置文件夹不同的文件夹同步模式,这决定了数据在两端之间如何流动。在配置仓库同步之前,先了解这几种模式,可以帮助你在后续步骤中快速理解每一步的意图。

以下以「本机」和「远端」来描述两端的角色:

同步模式本机设置远端设置实际效果
双向同步发送和接收发送和接收任何一端的新增、修改、删除都会同步到另一端,两端地位平等
增量推送仅发送仅接收 + 忽略删除本机新增或修改的文件会复制到远端;本机的删除操作不传播到远端
增量拉取仅接收 + 忽略删除仅发送远端新增或修改的文件会复制到本机;远端的删除操作不传播到本机
增量推送带删除仅发送仅接收本机新增或修改的文件会复制到远端,本机的删除也会在远端执行;远端是本机的完整镜像
增量拉取带删除仅接收仅发送远端新增或修改的文件会复制到本机,远端的删除也会在本机执行;本机是远端的完整镜像

💡 说明 从 Syncthing 配置的角度看,「增量推送」和「增量拉取」使用的是同一套设置(仅发送 搭配 仅接收 + 忽略删除),区别只在于哪一端是「主动方」。同理,「增量推送带删除」和「增量拉取带删除」也是同一套配置(仅发送 搭配 仅接收),只是视角不同。本文中最常用的两种模式是双向同步(基础方案和速记文件夹)与增量推送带删除(主仓库单向镜像,通常称为「镜像模式」)。

💡 说明(仅接收模式的安全网) 当某台设备的文件夹被设置为「仅接收」时,如果你在那台设备上不小心修改了某个文件,Syncthing 界面会出现红色的「还原本地修改(Revert Local Changes)」按钮。点击后,本地的误操作会被丢弃,文件夹重新与发送端对齐——这是一个非常实用的安全机制。


11. 基础方案:全库双向同步

这一节配置的是最基础的同步方案:整个仓库在电脑和手机之间双向同步,两端地位平等,任何一处的新增和修改都会同步到另一处。

这是入手 Syncthing 最自然的起点,操作最简单,适合刚搬来 Syncthing 的用户先跑通完整流程,之后再按需升级到更精细的进阶方案。

11.1 基础忽略规则(.stignore)

在添加文件夹共享之前,需要先处理忽略规则。即便是最简单的双向同步,也有两类内容不应该被同步:

  • .obsidian 文件夹:Obsidian 的配置文件夹,包含插件、主题、快捷键等设置。移动端和桌面端的配置并不完全通用——例如桌面端的某些插件在移动端不存在,强行双向同步极易导致配置互相覆盖、产生报错。建议从同步范围中排除,如有需要可以按后文「.obsidian 配置文件夹同步」一节的方式单独处理。
  • .trash 文件夹:Obsidian 的软删除回收站。这是本地临时内容,没有在设备间同步的必要。

在仓库根目录下,用任意文本编辑器创建名为 .stignore 的文件,写入以下内容:

/.obsidian
/.trash

/ 开头的写法是「根目录锚定」模式,只匹配同步文件夹根目录下的对应项,不会误匹配子文件夹中恰好同名的内容。这是比不加 / 更精确、更稳定的写法。

💡 说明(.stignore 的写法细节) Syncthing 的 .stignore 文件支持丰富的通配符语法:* 匹配任意字符(不含路径分隔符),** 跨目录递归匹配,? 匹配单个字符。以 / 开头的模式只匹配根目录,! 前缀可以反向包含被忽略的项。此外,.stignore 文件本身不会被 Syncthing 同步到其他设备,但它可以通过 #include 指令导入其他文件中的忽略规则。由于本文推荐直接在仓库根目录中创建 .stignore 文件,而 .stignore 作为仓库内的一个普通文件会被同步推送到手机端,因此手机端无需重复设置——这与通过 Syncthing Web 界面设置的忽略规则(存储在本地配置中、不会同步)不同。

以下是几种常见的易错写法对比,供参考:

不推荐写法问题推荐写法
.trash/末尾斜杠在部分版本行为不一致/.trash
.obsidian/同上/.obsidian
.obsidian/**只忽略内容,不忽略文件夹本身/.obsidian

关于 .stignore 文件。.stignore 必须放在每个同步文件夹的根目录,但它不会被 Syncthing 同步到其他设备。因此,多台设备不会自动共享同一个 .stignore 文件。Web GUI 的 ” 编辑忽略规则 ” 是对当前设备该文件夹的 .stignore 进行查看和修改;它显示的是本机这份规则,而不是从别的设备自动同步来的规则。

💡 说明( .stignore 文件的同步)

如果希望多台设备使用相同忽略规则,常见做法是把规则内容另存为一个普通文本文件(例如 stignore-backup.txt),让它随仓库正常同步;然后在每台设备上把这份内容复制到该设备同步文件夹根目录下的 .stignore。另外,.stignore 还支持 #include,可以引用一个会同步的普通文件作为规则片段。

另外,Syncthing 的 ignores 只是 ” 新文件夹默认忽略模板 “,会在新文件夹自动接受时被复制到 .stignore,并被 GUI 用来预填新增文件夹的忽略字段;它不是现有设备之间自动同步忽略规则的机制。

💡 补充说明(Git 用户) 以下内容仅与同时使用 Git 管理仓库的用户相关,不使用 Git 可完全跳过。

如果你同时使用 Obsidian Git 插件将仓库推送到 Git 仓库,仓库根目录下会存在 .git 文件夹和 .gitignore 文件。.git 文件夹包含 Git 的内部数据库,这些文件在 Git 操作时频繁变化,会触发大量不必要的同步,且对另一台设备没有意义。建议在 .stignore 中补充这两行:

/.git
/.gitignore

这两行对 Syncthing 的正常同步没有任何影响,只是避免了把 Git 内部文件也同步过去。

11.2 在电脑端添加文件夹

在电脑端 Syncthing Web 界面,点击「添加文件夹」按钮,进入文件夹配置对话框。

「常规」选项卡:

「文件夹标签」填写一个便于识别的显示名称,例如 我的Obsidian仓库(标签只用于界面显示,可以是任意名称);「文件夹路径」填写仓库在电脑上的实际完整路径。

⚠️ 注意(特定设置) 文件夹路径需要填写你自己电脑上的仓库实际存储位置。

项目示例值修改建议
文件夹路径(Windows)D:\Obsidian\我的仓库替换为你自己电脑上仓库文件夹的完整路径
文件夹路径(macOS)/Users/yourname/Documents/我的仓库替换为你自己 Mac 上仓库文件夹的完整路径

如果不确定仓库路径,可在 Obsidian「设置 → 关于」页面查看「仓库路径」字段。

「共享」选项卡: 勾选你在上一步添加的手机设备,使这个文件夹与手机共享。

「高级」选项卡(文件夹类型): 保持默认的「发送和接收(Send & Receive)」,这就是双向同步模式。

点击「保存」完成创建。

11.3 在手机端接受共享邀请

第一步:在手机上提前创建仓库文件夹。 在手机的文件管理器中,在你希望存放 Obsidian 仓库的位置(如「内部存储 → Documents」)新建一个空文件夹,建议与电脑端仓库同名。

⚠️ 注意 一定要先在手机上创建好这个空文件夹,再去接受共享邀请。如果把手机上已有其他内容的文件夹作为接收路径,可能产生意外冲突。

⚠️ 注意(特定设置) 手机端的存储路径需要根据你的设备和偏好设置。

项目示例值修改建议
Android 手机仓库路径/storage/emulated/0/Documents/我的仓库替换为你在手机上准备存放仓库的路径
iOS 仓库路径在此 iPhone 上 → Obsidian → 我的仓库通过文件浏览器在 iOS「文件」App 的 Obsidian 目录下创建

不同品牌手机的内部存储路径格式可能略有差异,以手机文件管理器实际显示的路径为准。

第二步:在 Syncthing-Fork 中接受邀请(Android)。 打开 Syncthing-Fork,在通知或文件夹列表中找到共享邀请,点击接受。在「创建文件夹」界面中:「文件夹标签」填写显示名称;点击「目录」按钮,选择刚才创建的空文件夹作为存储位置;「文件夹类型」保持默认的「发送和接收(Send & Receive)」;确认保存。

第二步(iOS): 在 Möbius Sync 或 Synctrain 中接受邀请时,通过「Pick External Folder」选择 Obsidian 沙盒中已准备好的空文件夹,文件夹类型同样设置为「发送和接收」,确认保存。

设置完成后,Syncthing 会开始初次同步。仓库文件越多,初次同步耗时越长,耐心等待至同步完成(可在 Web 界面观察进度条)。

推荐做法 初次同步期间,建议暂时关闭 Obsidian(电脑端和手机端都关闭),待同步 100% 完成后再打开,可有效避免初次同步产生不必要的冲突。iOS 端在初次同步期间需要保持 Möbius Sync 或 Synctrain 在前台。

同步完成后,在手机端的 Obsidian 中,将刚才同步的文件夹作为仓库打开即可开始使用。至此,基础的全库双向同步已完整配置完毕。


12. 进阶方案一:主仓库单向同步(电脑→手机)

基础方案中,两端地位完全平等——但如果你的使用模式是以电脑为主力编辑、手机主要用于阅读和少量查看,这种对称的双向同步反而是一种隐患:手机上的误操作(误删笔记、误改内容)会直接同步到电脑端,而你可能要过很久才会发现。

进阶方案一将同步方向改为单向:电脑端作为权威源(「仅发送」),手机端作为镜像(「仅接收」),手机上发生的任何意外修改都不会反向传播到电脑。整个仓库的内容由电脑单方面决定,手机只是一个忠实的只读副本。

12.1 忽略规则

与基础方案相比,.stignore 内容不需要改动,依然是:

/.obsidian
/.trash

如果你还没有创建 .stignore 文件,参照上一节的说明在仓库根目录中创建即可。

12.2 修改电脑端文件夹类型

如果你已经完成了基础方案的配置,进入电脑端已有的仓库文件夹设置(点击文件夹条目右侧的「编辑」按钮),将「文件夹类型」从「发送和接收」修改为「仅发送(Send Only)」,保存。

如果是全新配置,在添加文件夹时,直接在「高级」选项卡将「文件夹类型」设为「仅发送(Send Only)」。

12.3 修改手机端文件夹类型

在 Syncthing-Fork 中,进入对应仓库文件夹的设置(长按文件夹条目或进入文件夹详情),将「文件夹类型」从「发送和接收」修改为「仅接收(Receive Only)」,保存。

iOS 端操作相同:在 Möbius Sync 或 Synctrain 中,进入文件夹设置,将文件夹类型改为「仅接收(Receive Only)」。

如果是全新配置,在接受共享邀请时,「文件夹类型」直接选择「仅接收(Receive Only)」。

修改完成后,同步方向变为严格的单向:电脑端的任何变化(新增、修改、删除)都会推送到手机,手机端的本地变化不会传回电脑。如果手机上出现了意外的本地修改,Syncthing-Fork 界面会显示红色的「还原本地修改」按钮,点击即可丢弃手机端的差异,重新与电脑对齐。

💡 说明 这个方案的一个常见疑问是:「手机上完全没法编辑笔记了吗?」答案是:手机上的 Obsidian 仍然可以正常打开、阅读、甚至编辑文件——Obsidian 本身不受 Syncthing 控制。只是手机上的任何修改都不会被同步回电脑。下次电脑端有新内容同步过来时,如果与手机上的本地修改不一致,Syncthing-Fork 会提示本地变更,需要手动决定保留哪个版本。如果你有时候也需要在手机上做有意义的编辑并同步回电脑,请继续阅读进阶方案二。

💡 说明(iOS 场景) 对于 iOS 用户,将仓库设置为「仅接收」尤为推荐。这不仅防止误操作传回电脑,还特别符合 iOS 端后台限制下的使用模式——iOS 端主动打开 App 拉取更新,而不是双向实时同步,「仅接收」在语义和逻辑上都更加准确。


13. 进阶方案二:主仓库单向 + 速记文件夹双向

进阶方案一解决了「主力在电脑、手机以阅读为主」的场景,但现实中经常有一个例外:你可能希望在手机上随手捕捉灵感,这些速记内容需要同步回电脑,在电脑上进一步整理和加工。

进阶方案二在方案一的基础上,为这类需要双向流动的文件夹单独开辟一个双向同步通道,而主仓库的其余内容依然保持从电脑单向推到手机的方向。两套规则各自独立,互不干扰。

整体架构如下:

  • 主仓库(除速记文件夹以外的所有内容):电脑「仅发送」→ 手机「仅接收」,单向镜像。
  • 速记文件夹:电脑「发送和接收」↔ 手机「发送和接收」,自由双向。

在手机上新建的速记内容会自动同步到电脑;在电脑上整理的速记也会同步回手机;主仓库的其余内容依然由电脑单方面决定,手机上的误操作不会影响主仓库。

⚠️ 注意(特定设置) 以下操作以仓库内一个专门用于随手记录的文件夹为示例,这个文件夹的名称和位置是示例特定值。

项目示例值修改建议
双向同步文件夹名速记替换为你自己仓库中需要双向同步的文件夹名称
电脑端完整路径D:\Obsidian\我的仓库\速记替换为该文件夹在电脑上的完整路径
Android 端完整路径/storage/emulated/0/Documents/我的仓库/速记替换为该文件夹在手机上的完整路径
iOS 端路径在此 iPhone 上 → Obsidian → 我的仓库 → 速记通过 Möbius Sync / Synctrain 的文件浏览器选择

如果你没有类似需求,这一节可以直接跳过。

13.1 更新忽略规则

要让速记文件夹从主仓库的单向同步中「独立出去」,需要在 .stignore 中将它排除。更新仓库根目录下的 .stignore 文件,追加一行:

/.obsidian
/.trash
/速记

💡 说明(特定设置) 第三行 /速记 是示例特定值,将「速记」替换为你自己仓库中需要双向同步的文件夹的实际名称。如果有多个需要双向同步的文件夹,每行写一个,格式相同。

这一行的作用是把该文件夹从主仓库的单向同步通道中排除,让它不受「仅发送 / 仅接收」规则管辖。之后我们会为它单独建立一个双向同步通道。

.stignore 文件修改保存后,请记得在手机端同步更新对应的 .stignore 文件(参见第 14.1 节中关于 .stignore 不会自动同步的说明),确保两端使用相同的忽略规则。

13.2 在电脑端为速记文件夹添加独立同步

在电脑端 Syncthing Web 界面点击「添加文件夹」,进入配置:

「文件夹标签」填写显示名称,如 速记(双向);「文件夹路径」填写速记文件夹在电脑上的完整路径(即仓库路径下的对应子文件夹)。

「共享」选项卡: 勾选手机设备。

「高级」选项卡(文件夹类型): 保持「发送和接收(Send & Receive)」,这是双向同步设置。

点击「保存」。

13.3 在手机端接受速记文件夹的共享邀请

⚠️ 重要:必须提前在手机端创建对应的空文件夹 在接受速记文件夹的共享邀请之前,先在手机端文件管理器中,导航到 Obsidian 仓库的根目录,新建一个与电脑端完全同名的空文件夹(例如 速记)。iOS 端同样需要在「文件」App 中,导航到 在此 iPhone 上 → Obsidian → 你的仓库名,在其中新建同名空文件夹。

如果不提前创建就直接把仓库根目录指定为接收路径,Syncthing 会将速记文件夹的内容直接同步到仓库根目录,导致仓库根目录充满不应该在这里的文件,整个同步逻辑会乱掉。

在 Syncthing-Fork 中接受共享邀请。在「创建文件夹」界面中,「文件夹类型」选择「发送和接收(Send & Receive)」,目录指向刚才在仓库内创建的空文件夹,确认保存。iOS 端在 Möbius Sync / Synctrain 中同样接受邀请,通过「Pick External Folder」选择对应的 Obsidian 子目录,文件夹类型选「发送和接收」。


14. 进阶方案三:以主力手机为中心的拓扑同步

前面两个方案构建的是最基础的两端同步——一台电脑和一部手机。如果你还有第二部手机、一台平板、或者另一台电脑,想让它们也加入同步网络,就涉及到拓扑设计的问题了。

14.1 为什么需要拓扑设计

最直觉的做法是让所有设备两两直连,但这带来两个问题。

其一是管理成本。N 台设备需要维护 N×(N-1)/2 条同步关系——3 台设备需要 3 条,5 台设备就需要 10 条,每新增一台设备都要在所有现有设备上手动添加对等关系和文件夹共享,维护起来相当繁琐。

其二是同步稳定性。在全双向多对多的网络中,任意一台设备上的误操作(误删、误改)都可能以难以预期的路径扩散到其他所有设备。一旦出错,追溯和修复的难度也成倍上升。

14.2 方案逻辑:星型拓扑

更优雅的方式是选定一台设备作为中心节点,其他设备都通过它间接同步——这就是以主力手机为中心的星型拓扑。

在 Syncthing 中,一个「仅接收」设备有一个容易被忽视的特性:它虽然不会向上游传播自己的本地修改,但它从上游(电脑端)接收到的合法更新,会继续向下游(其他设备)分发。

这意味着,主力手机可以同时扮演两个角色:

  • 对电脑端而言,它是一个「仅接收」的镜像,电脑是权威源;
  • 对其他下游设备而言,它是一个中继节点,将电脑端的更新继续往下传。

主力手机上的误操作(误删、误改)不会传给电脑,也不会传给其他下游设备——它们会暂时停滞,直到主力手机点击「还原本地修改」恢复正常状态后,同步才继续流向下游。

数据流向:

电脑(仅发送)→ 主力手机(仅接收)→ 其他设备(仅接收)

14.3 添加下游设备的步骤

以下步骤假设你已经完成了电脑与主力手机之间的同步配置,现在要加入第三台设备(例如平板或备用手机)。

第一步:在主力手机端添加新设备。 打开 Syncthing-Fork,在「设备」选项卡,通过扫描二维码或手动输入 Device ID 的方式,将新设备添加为配对设备。

第二步:在主力手机端将仓库文件夹共享给新设备。 点击已有的 Obsidian 仓库文件夹条目,进入「设置」→「共享」选项卡,在设备列表中找到新添加的设备,勾选后保存。

第三步:新设备接受邀请。 新设备上的 Syncthing 会收到共享邀请,接受时同样将文件夹类型设置为「仅接收(Receive Only)」,并指定合适的本地存储路径。

拓扑建立之后,所有下游设备的误操作都不会往上游传播,整个同步网络的数据流向是单向、受控的。新增设备时,只需要在主力手机上操作,而不需要逐一修改电脑端的配置。

14.4 多设备场景下的速记文件夹:按设备建立子文件夹

星型拓扑建立之后,速记文件夹的配置方式也值得重新审视。在只有一台电脑和一部手机的两端场景中,速记文件夹双向同步即可满足需求;但当下游设备增加到两台甚至更多时,所有设备都向同一个速记文件夹并发写入,命名冲突的概率会明显上升——不同设备在接近相同的时间创建了同名文件,或者某台设备离线期间另一台设备已经创建了同名文件,这些情况在多设备场景中都比两端场景更常见。

一种简洁有效的应对方式是:在速记文件夹下按设备名称建立子文件夹,每台设备只向自己对应的子文件夹写入内容。

例如,速记文件夹内的结构可以是:

速记/
速记/电脑/
速记/手机/
速记/平板/

每台设备在自己的子文件夹里自由创建文件,其他设备的子文件夹以只读方式同步过来。这种方式带来两个明显好处:其一,彻底消除了多端同时向同一路径写入文件时可能发生的命名冲突;其二,在电脑上整理速记时,一眼就能看出每条记录的来源设备,有助于快速分类和处理。

在 Obsidian 中,可以通过模板系统(如 Templater 插件)为每台设备设置不同的新建文件默认路径,或者在 Obsidian 设置的「文件与链接」中将「默认新建笔记位置」配置为对应设备的子文件夹,这样随手新建的速记会自动落入正确的位置,无需每次手动选择。

💡 说明(特定设置) 子文件夹的命名是示例值,按你自己的设备名称或习惯替换即可。这种分层结构只是一个组织建议,不是 Syncthing 的强制要求,完全可以根据实际情况灵活调整。如果你只有两台设备且写入频率不高,直接使用平级的双向速记文件夹也完全够用。

14.5 与 Syncthing 的 Introducer 功能的区别

Syncthing 内置了一个「Introducer(介绍人)」功能,容易与上述拓扑方案混淆,这里简单说明区别。

「Introducer」功能解决的是自动交换设备 ID 的便利性问题:如果 A 认识 B,B 认识 C,将 B 设为 A 的介绍人,B 会自动把 C 的联系信息推给 A,让 A 和 C 自动互相认识,新设备加入时不需要逐一手动添加。

而上述「以主力手机为中心的拓扑」解决的是数据流方向控制的问题:确保手机的误操作不会传播,数据只从权威源(电脑)往下游流动,同时降低多设备管理的维护成本。

两者并不冲突,可以同时使用,但功能定位完全不同。


15. .obsidian 配置文件夹同步

这一节属于补充场景,解决的是:如何让手机端的 Obsidian 使用与电脑端相同(或接近)的配置,包括插件设置、快捷键等。

Obsidian 的配置存储在仓库根目录下的 .obsidian 文件夹中。前文将它从主仓库同步中排除,原因是移动端与桌面端的配置并不完全通用——例如桌面端的某些插件在移动端不存在,强行同步可能导致移动端出现报错或配置异常。

如果你仍然希望同步 .obsidian 文件夹,可以单独为它建立一个从电脑到手机的单向同步通道:电脑端设为「仅发送」,手机端设为「仅接收」,方式与主仓库的进阶方案一类似。

这里有一个 Android 系统层面的特殊限制需要注意:Android 的文件管理器通常无法显示或操作以 .(点)开头的文件夹,这意味着你无法在手机上直接在 Obsidian 仓库根目录下创建名为 .obsidian 的文件夹作为同步目标。

一种可行的变通方式:

  1. 在手机上先以普通名称(如 obsidian-config-temp)在仓库根目录外部的某个临时位置创建一个空文件夹,作为 Syncthing 的同步接收目标。
  2. Syncthing 完成同步后,使用支持显示隐藏文件的第三方文件管理器(如 MiXplorer、Solid Explorer 等),将已同步的文件夹复制或移动到仓库根目录下,并重命名为 .obsidian
  3. 之后每次 .obsidian 有更新时,重复上述操作。

⚠️ 注意 这个流程较为繁琐,不适合高频操作。如果电脑端的配置相对稳定、不经常变动,偶尔手动同步一次是可以接受的。如果需要频繁同步配置,建议在两端分别管理各自的 .obsidian,保持手动一致,而不是依赖 Syncthing 来同步这个文件夹。

💡 说明(iOS 端的配置同步) iOS 端同样不需要同步 .obsidian 文件夹。iOS 版 Obsidian 的配置与桌面端相差较大,许多桌面端插件在 iOS 上并不存在或行为不同,强行同步反而容易造成冲突和报错。建议在 iOS 端单独配置适合移动端使用习惯的插件和主题,与桌面端保持相互独立。


16. 冲突文件处理

Syncthing 的冲突处理原则非常保守:宁可保留两份,也不轻易覆盖。当两台设备在没有互相同步的情况下各自修改了同一个文件,Syncthing 无法自动判断哪个版本是「正确」的,就会生成冲突副本。

16.1 冲突是如何产生的

冲突发生的典型场景是:在没有网络连接的情况下,你同时在电脑和手机上编辑了同一个文件,之后恢复连接时,Syncthing 发现两端都有更新,无法确定以哪个为准。

在本文推荐的方案中,进阶方案一(主仓库单向同步)中手机端设置为「仅接收」,手机上无法产生合法的修改,因此主仓库不会产生冲突。冲突只可能发生在双向同步的通道上——基础方案的整个仓库,以及进阶方案二中的速记文件夹。

16.2 冲突文件的命名规则

Syncthing 生成冲突副本时,文件名遵循以下格式:

[原文件名].sync-conflict-[日期]-[时间]-[设备ID简码].[后缀]

例如一个叫 今日速记.md 的文件发生冲突,可能会产生:

今日速记.sync-conflict-20260428-143022-ABCDEF.md

文件名中的日期时间告诉你这个冲突版本产生的时间;设备 ID 简码告诉你这个版本来自哪台设备。在 Syncthing Web 界面底部的设备列表中,可以对应上每个 ID 简码的来源。

16.3 处理冲突的流程

冲突副本一旦产生,会像普通文件一样被 Syncthing 同步到所有相关设备——这不只是本地提示,而是一个全局文件,所有设备都能看到。

处理步骤:

  1. 在 Obsidian 中找到带有 .sync-conflict 标记的文件,打开它,查看其中的内容。
  2. 与保留原名的主版本对比,判断两个版本中各有哪些有价值的内容。
  3. 将冲突副本中需要保留的内容手动合并到主版本中,保存主版本。
  4. 删除冲突副本。 这一步至关重要——冲突文件不会自动消失,如果不手动删除,它会一直存在于所有设备上,积累多了会造成混乱。

💡 说明(借助插件处理冲突) 如果你安装了本文第 22 节介绍的 Syncthing Manager 插件,它提供了内置的可视化冲突解决工具:插件会自动检测仓库中所有 .sync-conflict 文件,并提供双栏差异对比视图,让你在 Obsidian 内部直接比较两个版本的内容、选择保留哪一份,无需手动在文件管理器中查找和删除冲突文件。如果你的工作流中双向同步场景较多、冲突出现频率较高,这个插件能明显降低处理冲突的摩擦。

16.4 降低冲突发生概率的习惯

养成以下习惯,冲突出现的概率会大幅降低:在切换设备前,等待同步完全完成再在另一台设备上继续编辑;避免在两台设备上同时打开并编辑同一个文件;离线环境下编辑完成后,恢复网络后先确认同步完成,再切换到另一台设备。

16.5 高级选项:Max Conflicts 设置

Syncthing 默认最多为每个文件保留 10 个冲突副本(即 Max Conflicts = 10)。在某些使用场景下,你可能希望调整这个上限。

如果你已经通过进阶方案一将手机端设为「仅接收」,理论上主仓库不应该产生任何冲突副本,此时可以考虑将该文件夹的 Max Conflicts 设为 0,彻底禁止冲突副本的生成。0 的含义是:当冲突发生时,Syncthing 直接覆盖本地版本,而不是生成冲突副本保留两份——这相当于告诉 Syncthing「遇到冲突时以远端为准」。

⚠️ 注意 Max Conflicts = 0 只适用于你有明确权威源的单向场景(例如手机端「仅接收」文件夹)。对于双向同步的速记文件夹,不建议设为 0,因为双向场景中两端都可能产生有意义的修改,直接覆盖会造成数据丢失。

调整方式:在 Syncthing Web 界面点击对应文件夹的「编辑」,切换到「高级」选项卡,找到「冲突副本最大数量(Max Conflicts)」字段,修改数值后保存即可。


17. 文件版本控制

文件版本控制是 Syncthing 的一个内置功能,作用是:当某个文件因为同步而被替换或删除时,旧版本会被保存到一个专用的历史目录中,而不是直接消失。这为误删或误覆盖提供了一道额外的安全网。

⚠️ 注意 Syncthing 的文件版本控制只对从其他设备同步过来的变更有效,而不是针对本地操作。也就是说,如果你在本地直接删除一个文件,版本控制不会为它存档;但当这个删除操作通过同步传播到另一台设备(导致那台设备的同名文件被删除)时,如果那台设备启用了版本控制,被删除的文件就会被保存到历史目录中。

因此,版本控制应该在接收端启用,才能达到保护接收端内容的效果。

17.1 四种版本控制策略

回收站版本控制(Trash Can): 最简单直观的策略。被替换或删除的文件会被移动到指定的历史目录。每个文件只保留最近的一个历史版本,适合日常场景下的快速误删恢复。「该时间后清除」设置多少天后自动清理历史版本,设为 0 表示永不自动清除。

简单版本控制(Simple): 对每个文件保留最近 N 个历史版本(在「保留版本数」中设置),N 可以是 3、5、10 等。历史版本存储在指定目录,文件越多、版本数越多,占用空间越大。

阶段式版本控制(Staggered): 采用分层时间窗口保留历史,越久远的版本越稀疏:第一小时内每 30 秒一个版本,第一天内每小时一个,前 30 天每天一个,更早的则每周一个(直到设定的最大保留天数)。这种策略在长期归档时占用空间相对可控,适合需要保留长期历史快照的场景。

外部脚本(External): 由你指定一个外部脚本来处理被替换的旧文件,灵活性最高,适合有定制化版本管理需求的高级用户。

17.2 推荐配置

对于 Obsidian 仓库的日常使用,回收站版本控制是最合适的起点:配置简单,行为直观,发生误删时容易找回。

在 Syncthing Web 界面中,进入文件夹的编辑(点击文件夹条目右侧的「编辑」按钮),切换到「文件版本控制」选项卡,从下拉菜单选择「回收站文件版本控制(Trash Can)」,填写「该时间后清除」天数,保存即可。

💡 说明(Syncthing 2.0 新增:局域网带宽限制) 如果你的仓库附件较多(如大量 PDF、图片),初次同步或大批量更新时 Syncthing 可能占用较大的局域网带宽,影响其他网络活动。Syncthing 2.0 在 GUI 的「操作 → 设置 → 连接」选项卡中新增了「局域网传输速率限制」选项,可以单独为本地网络设置上传和下载速率上限,与互联网方向的限速分开控制。如果你发现同步期间网络卡顿,可以在这里设置一个合适的上限值。

⚠️ 注意(特定设置) 版本控制存储路径建议设置到仓库外部,而非默认的 .stversions(位于仓库内部),否则会让仓库结构复杂,Obsidian 索引历史版本文件。

项目示例值修改建议
历史版本路径(Windows)D:\SyncBackup\Obsidian版本历史替换为自定义的历史存储路径,建议与仓库在同一磁盘分区
历史版本路径(macOS)/Users/yourname/SyncBackup/Obsidian版本历史替换为 Mac 上的对应路径
该时间后清除100 天根据磁盘空间和需求调整,0 表示永不自动清除

版本控制的存储路径建议与被同步的文件夹在同一磁盘分区,否则 Syncthing 在移动旧版本文件时可能因为跨分区而失败。同时,不要将版本历史路径设置在被同步的文件夹内部,否则会引发路径冲突。

17.3 与 Git 版本控制的关系

💡 补充说明(Git 用户) 以下内容仅与同时使用 Git 管理仓库的用户相关。

Syncthing 的文件版本控制与 Git 解决的是不同层次的问题:Syncthing 版本控制是对同步事件的自动存档,无法自定义提交信息、无法做分支管理;Git 是完整的版本控制系统,支持历史追溯、分支、回滚等完整功能。

如果你同时使用 Obsidian Git 插件将仓库推送到 Git 仓库,两者可以并行存在,各自发挥不同的保护作用,互不干扰。Syncthing 版本控制更像是一道即时的安全网,Git 则是系统性的长期历史管理。


18. 在 macOS 端安装与配置 Syncthing

macOS 端的 Syncthing 安装体验比 Windows 更为流畅,有三种路线可以选择,各有侧重。对大多数用户来说,syncthing-macos 适合图形界面和菜单栏管理,Homebrew Cask 适合想要自动更新的人,Homebrew Formula 则适合偏好纯命令行、只看 Web 界面的用户。

18.1 安装方式的选择

方式一:官方原生应用(推荐)

syncthing-macos 是 Syncthing 官方提供的 macOS 原生应用包,用 Objective-C 和 Swift 开发,提供菜单栏图标、登录时自动启动、Retina 支持以及通过 Sparkle 框架的自动更新。这是目前 macOS 用户体验最完整的选项。

⚠️ 注意(系统版本要求) 自 2026 年 2 月起,syncthing-macos 官方应用捆绑的是 Syncthing 2.0,最低要求 macOS 12(Monterey)。如果你的系统是 macOS 11 或更早版本,需要使用旧版本的应用包,请在 GitHub Releases 页面筛选版本。

安装步骤:

  1. 前往 github.com/syncthing/syncthing-macos/releases 下载最新的 .dmg 文件。
  2. 挂载磁盘镜像,将 Syncthing.app 拖入「应用程序」文件夹。
  3. 首次启动时,如果 macOS 提示「无法验证开发者」,进入「系统设置 → 隐私与安全性」,找到对应提示,选择「仍然打开」。此后应用会正常启动并在菜单栏显示图标。

💡 说明 syncthing-macos 应用包禁用了 Syncthing 内置的自动更新机制,改由 Sparkle 框架统一负责应用本身的版本管理,两者不会冲突。

方式二:Homebrew Cask(自动更新)

如果你已经安装了 Homebrew,可以通过以下命令直接安装官方原生应用:

brew install --cask syncthing-app

这与方式一安装的是同一个应用,区别是后续版本更新可以通过 brew upgrade --cask syncthing-app 完成,无需手动下载。

方式三:Homebrew Formula(命令行服务)

如果你偏好纯命令行管理,也可以安装无 GUI 的 Syncthing 二进制程序,并通过 Homebrew Services 将其注册为 launchd 开机自启服务:

brew install syncthing
brew services start syncthing

执行 brew services start syncthing 后,Syncthing 会被注册为用户级 launchd 服务,每次登录后自动在后台启动,无需额外配置。Web 界面访问地址同样是 http://localhost:8384/

💡 说明(方式一与方式三的区别) 方式一(cask)安装的是带 GUI 包装的原生应用,菜单栏图标提供了同步状态指示器、一键打开仓库文件夹、打开 Web 界面等便捷入口,适合不熟悉命令行的用户。方式三只有纯后台进程,没有任何 GUI,所有操作都通过浏览器的 Web 界面完成,适合更熟悉终端操作的用户。两者功能上完全等价,选择哪种纯粹是个人偏好。

18.2 开机自启配置

  • 方式一 / 方式二(原生应用):打开 Syncthing 应用,在菜单栏图标的下拉菜单中找到「开机时启动(Launch at Login)」选项,勾选即可。应用内部通过 macOS 的 Login Items 机制完成注册,无需手动配置 launchd。
  • 方式三(Homebrew Formula):执行 brew services start syncthing 后已自动配置开机自启,无需额外操作。如果需要停止自启,执行 brew services stop syncthing 即可。

18.3 首次访问 Web 界面

启动应用后(方式一/二会在菜单栏显示图标),在浏览器中访问:

http://localhost:8384/

能正常看到 Syncthing 的 Web 界面,说明程序已在运行。

💡 说明 macOS 用户后续所有同步配置的操作步骤与 Windows 端完全一致,本文中凡提及「在 Web 界面」操作的步骤,macOS 用户照常参照执行即可。

18.4 macOS 特有的注意事项

Apple Silicon(M 系列芯片)兼容性良好。 官方 syncthing-macos 应用和 Homebrew 版本均为通用二进制(Universal Binary)或原生 ARM 版本,在 M1/M2/M3/M4 Mac 上可以直接运行,无需通过 Rosetta 转译,性能表现与 Intel Mac 一致,不存在 Windows ARM 那样的兼容性问题。

仓库路径。 macOS 的 Obsidian 仓库通常位于用户主目录下,例如 ~/Documents/ObsidianVault(实际路径取决于你建库时的选择)。在 Syncthing Web 界面中填写路径时,~ 通常可以正常解析,但为避免歧义,建议填写完整的绝对路径,例如 /Users/你的用户名/Documents/ObsidianVault。如果不确定路径,可在 Obsidian「设置 → 关于」页面查看「仓库路径」字段。

日志文件位置。 如果使用方式一/二的原生应用,Syncthing 的日志文件会写入 ~/Library/Application Support/Syncthing/syncthing.log。在 Finder 中,可通过「前往 → 前往文件夹」,输入 ~/Library/Application Support/Syncthing/ 来打开该目录。遇到同步异常时,这里是排查问题的第一手资料。

防火墙提示。 macOS 系统防火墙在 Syncthing 第一次尝试接受外部连接时可能弹出「是否允许」提示,选择「允许」才能正常建立 P2P 连接。如果误点了拒绝,可在「系统设置 → 网络 → 防火墙」中找到 Syncthing 条目,手动改为允许。

💡 说明 macOS 端的 Syncthing 配置文件(config.xml)存储在 ~/Library/Application Support/Syncthing/ 目录下。如果你从旧 Mac 迁移 Syncthing 配置,只需将这个目录完整复制到新机器上,就能保留所有设备认证关系和同步文件夹设置,无需重新配对。


19. 在 iOS 端配置 Syncthing

19.1 iOS 平台的根本限制

在了解具体操作之前,有一点需要提前明确:iOS 系统从根本上不允许任何应用持续在后台运行。这是 Apple 的沙盒安全模型决定的,与具体的 App 质量无关。这意味着 iOS 端的 Syncthing 行为与 Android 端有本质区别:

  • Android 端的 Syncthing-Fork 可以作为真正的后台服务持续运行,只要手机不关机,同步就在进行。
  • iOS 端的 Syncthing 应用只有在打开使用时,或者偶尔获得系统分配的短暂后台时间时,才会执行同步。你不能依赖 iOS 端做到「打开 Obsidian 时笔记已经是最新版」——你需要先打开 Syncthing App,等待同步完成,再去用 Obsidian。

这个限制对使用场景有直接影响:iOS 端更适合作为「接收端」,在有 Wi-Fi 且你主动触发时完成同步,而不是像 Android 那样可以全程静默后台同步。如果你的工作模式是以桌面端为主力、iOS 端主要用于阅读和查看,这个限制基本可以接受;如果你需要在 iOS 端频繁写入并实时同步回桌面,体验会打折扣。

推荐做法 在 iPhone 或 iPad 上,优先把仓库设成“只读阅读 + 少量临时编辑”的工作方式;真正要长期写作和整理时,还是以 Windows 或 macOS 为主力端最稳。

💡 说明(背景同步的改善) iOS 提供了「Background App Refresh(后台应用刷新)」机制,允许应用在后台获得短暂的运行时间,这可以在一定程度上改善 Syncthing 的后台同步体验。建议在「设置 → 通用 → 后台 App 刷新」中为 Syncthing 应用开启此选项。但这仍然不是持续后台运行,系统会根据设备使用情况和电量自主决定何时触发,不可完全依赖。

19.2 iOS 客户端选择:Möbius Sync vs Synctrain

目前 iOS 上可用的 Syncthing 客户端主要有两款,均不是官方应用(Syncthing 官方没有 iOS 客户端)。

Möbius Sync

Möbius Sync 是出现较早的 iOS Syncthing 实现,积累了一定的用户群和社区讨论。

  • 收费模式:免费使用,但总文件存储上限为 20MB(仅限 App 自身沙盒内的文件)。对于 Obsidian 仓库来说,20MB 远远不够,因此实际使用需要购买一次性的「无限同步」内购解锁才能正常工作。
  • 沙盒外访问:自 v1.23.1 起支持「选择外部文件夹(Pick External Folder)」功能,可以访问 Obsidian App 沙盒中的仓库文件夹,这是与 Obsidian 联动的关键能力。
  • 稳定性:功能完整,但部分用户反映在 iOS 长期后台后会停止同步,需要手动打开 App 触发。

Synctrain

Synctrain 是 2025 年发布的较新选项,由同名开发者基于 SwiftUI 开发,同时提供 iOS 和 macOS 版本。

💡 说明(命名差异) App Store 上的正式名称是 Synctrain,其开源仓库名常写作 Sushitrain。如果你在网页、论坛或测试版说明里看到这两个名字,指的是同一套 iOS / macOS 客户端。

  • 收费模式:App Store 付费下载(一次性买断),功能不受限制。
  • Syncthing 2.0 支持:自发布之初即基于 Syncthing 2.0 构建,数据库和协议均使用最新版本。
  • iOS 沙盒适配:可以将同步目标指向 Obsidian 的沙盒目录,联动方式与 Möbius Sync 类似。
  • 附加功能:支持选择性同步(只同步指定文件,而非整个文件夹)、媒体文件的流式播放(无需完整下载即可在线观看/收听)、Shortcuts 快捷指令集成。
  • 社区评价:在 Syncthing 论坛和 Obsidian 社区中,Synctrain 的用户反馈整体较为积极,被不少用户认为是目前体验最好的 iOS Syncthing 客户端。

如何选择?

对比维度Möbius SyncSynctrain
收费方式免费 + 内购解锁无限存储一次性付费买断
iOS 版本要求支持较旧 iOS 版本较新 iOS 版本(建议 iOS 16+)
Syncthing 2.0 支持支持原生支持
Obsidian 沙盒访问支持(v1.23.1+)支持
后台同步受 iOS 限制,有时需手动触发受 iOS 限制,可申请更长后台时间
社区成熟度更早,讨论资料较多较新,但评价积极

对于绝大多数 Obsidian iOS 用户,两款 App 均可胜任。如果你更在意功能完整度、选择性同步和 App Store 的官方支持,Synctrain 是更优选择;如果你更看重早期生态、免费试用和在 iOS Files 里的传统文件夹工作流,Möbius Sync 也完全可用。

⚠️ 注意 无论选择 Möbius Sync 还是 Synctrain,它们都只是同步工具,不是备份工具;删除操作会同步到另一端,重要资料仍然要保留额外备份。

19.3 Möbius Sync 的安装与 Obsidian 仓库配置

第一步:在 Obsidian 中准备仓库目录。 在 iOS 端打开 Obsidian,如果还没有仓库,先创建一个临时仓库(名称随意,例如 temp)。取消勾选「存储在 iCloud 中」——Möbius Sync 目前不支持 iCloud 路径,仓库必须存储在设备本地。这一步的目的是让 iOS 在「文件」App 中创建 Obsidian/temp 的目录结构。

第二步:在 Möbius Sync 中添加外部文件夹。 打开 Möbius Sync,点击「Add Folder」→「Pick External Folder」。在文件浏览器中,导航到「在此 iPhone 上(On My iPhone)」→「Obsidian」,在这里新建一个文件夹,命名与你在电脑端的仓库同名(不要选择刚才创建的 temp 文件夹)。系统会弹出提示,告知该文件夹位于 Möbius Sync 沙盒之外,确认继续即可。

⚠️ 注意 「Pick External Folder」是一项有一定风险的功能,Möbius Sync 官方文档也明确提示:在另一个 App 的沙盒中操作文件,存在数据损坏或丢失的可能性,请确保有备份。在配置阶段不要将重要数据放入同步范围,等确认运行正常后再正式使用。

第三步:共享该文件夹。 在 Möbius Sync 中,点击刚才添加的文件夹条目,进入「Edit」→「Sharing」选项卡,找到并勾选电脑端的设备,保存。

第四步:在 Obsidian 中打开仓库。 等待 Möbius Sync 完成初次同步后,在 Obsidian 中选择「打开已有仓库」,导航到 Obsidian/[你的仓库名] 目录,打开即可。

19.4 Synctrain 的安装与 Obsidian 仓库配置

第一步:同样先在 Obsidian 中准备仓库目录。 步骤与上节 Möbius Sync 的第一步相同:在 iOS 端 Obsidian 中创建临时仓库,取消勾选 iCloud,让系统创建本地目录结构。

第二步:在 Synctrain 中添加文件夹并选择 Obsidian 路径。 打开 Synctrain,点击「Add Folder」。在选择存储路径时,点击「Existing folder…」,在文件浏览器中导航到「在此 iPhone 上(On My iPhone)」→「Obsidian」,在此处新建目标文件夹(命名与电脑端仓库一致)并选择。

第三步:配对并接受电脑端共享邀请。 通过扫描二维码或手动输入 Device ID 与电脑端完成配对,然后在 Synctrain 中接受来自电脑端的文件夹共享邀请。接受时将文件夹类型根据需要设置为「发送和接收」或「仅接收」。

第四步:在 Obsidian 中打开仓库。 与 Möbius Sync 步骤相同,同步完成后在 Obsidian 中选择「打开已有仓库」,导航到目标文件夹打开即可。

19.5 iOS 端同步的实用建议

养成「先同步,再阅读/编辑」的习惯。 由于 iOS 的后台限制,每次使用前先打开 Syncthing App,等待同步完成(观察进度状态变为「已同步」),再切换到 Obsidian,可以最大程度保证内容是最新的。

充分利用「仅接收」模式。 如果你在 iOS 端主要是阅读,将 iOS 端设置为「仅接收」不仅能防止误操作传回电脑,还能减少同步触发的复杂度——Syncthing 不需要检测和上传本地变更,只需要拉取电脑端的更新,逻辑更简单,也更不容易出问题。

Wi-Fi 环境下同步。 移动数据环境下同步大仓库附件既慢又耗流量。可以在 Syncthing App 的设置中限制为「仅 Wi-Fi 下同步」,外出时不同步附件,回到 Wi-Fi 环境后自动补全。

初次同步建议用桌面端发起。 iOS 端作为接收端,初次同步时仓库的所有文件都需要从电脑端传输过来,这个过程要保持 iOS 端的 Syncthing App 始终在前台,不要切走,否则进程会被暂停,需要重新打开继续。

💡 补充说明(iPadOS 用户) iPadOS 用户同样可以使用 Möbius Sync 或 Synctrain,路径处理逻辑与 iPhone 完全一致(「在此 iPad 上 → Obsidian」)。iPad 在充电时处于插电模式,iOS 对后台运行的限制会相对宽松,实际同步效果通常好于 iPhone。


20. iOS 端初始配置要点

iOS 端的 Syncthing App(Möbius Sync 或 Synctrain)在安装完成后,同样需要进行基本的初始设置,才能确保与其他设备顺利建立同步关系。

开启后台应用刷新。 在 iOS「设置 → 通用 → 后台 App 刷新」中,确认整体开关为「Wi-Fi」或「Wi-Fi 与移动数据」,并为 Möbius Sync 或 Synctrain 单独开启这一权限。这让 iOS 有机会在后台短暂唤醒应用完成同步,而不必每次都手动打开。

允许局域网访问。 首次使用时,iOS 会弹出「[App 名称] 想查找并连接到局域网上的设备」的权限请求,务必选择「允许」。这是 Syncthing 局域网自动发现和直连的基础权限,拒绝后只能通过中继服务器连接,速度和稳定性都会下降。如果误点了拒绝,可在「设置 → 隐私与安全性 → 局域网」中重新授权。

设备名称设置。 与其他平台相同,进入 App 内的 Web GUI(http://127.0.0.1:8384/),在「操作 → 设置 → 常规」中将设备名改为便于识别的名称(如「我的 iPhone」「iPad Pro」)。

了解 App 的同步状态指示器。 两款 App 的主界面都会显示各文件夹的同步状态。在进行任何操作之前,先确认状态显示为「已同步(Up to Date)」再切换到 Obsidian,养成这个习惯可以有效避免因同步未完成而编辑旧版本笔记。

⚠️ 注意(iOS 端不要设置 HTTPS) iOS 端 Syncthing App 通常以 HTTP 访问本机 Web GUI(http://127.0.0.1:8384/)。如果在 GUI 设置中启用了 HTTPS,Obsidian 中安装的 Syncthing 插件(如 Syncthing Integration 或 Syncthing Manager)将无法连接本机 Syncthing 实例,因为 Obsidian Mobile 不信任自签名证书。建议 iOS 端保持 HTTP,桌面端按需开启 HTTPS。


21. 常见问题与排查

21.1 Web 界面无法访问

电脑端: 大概率是 Syncthing 尚未启动。如果使用了任务计划程序配置开机自启,可以前往任务计划程序检查任务状态,右键选择「运行 (R)」手动触发一次;或者直接手动双击 syncthing.exe 启动程序,再访问界面。macOS 用户请检查菜单栏中是否有 Syncthing 图标,若没有则重新启动应用;使用 Homebrew Formula 的用户可执行 brew services restart syncthing 重启服务。

Android 端: 打开 Syncthing-Fork 后,通过应用内的「Web GUI」入口访问,而不是通过外部浏览器直接输入地址。

iOS 端: 同样需要打开 Möbius Sync 或 Synctrain,在 App 内找到 Web GUI 入口(通常标注为「设置」或齿轮图标),从那里访问,而不是在 Safari 中直接输入地址——iOS 上只有 App 自身进程在运行时,Syncthing 的本地 HTTP 服务才会监听请求。

21.2 两台设备无法发现对方

同一局域网内的设备发现依赖局域网广播,部分路由器配置或防火墙设置会阻断广播包。如果无法自动发现,改为手动添加:在「添加远程设备」时手动输入对方的 Device ID,不依赖自动发现也可以完成配对。

跨网络(不在同一局域网)时,Syncthing 会通过官方中继服务器建立连接穿透 NAT。如果中继连接也失败,可以检查防火墙设置,或在路由器上为 Syncthing 配置端口转发(Syncthing 默认使用 TCP/UDP 22000 端口)。

21.3 手机端出现红色「还原本地修改」按钮

当手机端文件夹类型为「仅接收」,但本地文件与电脑端不一致时(通常是手机上出现了意外修改),Syncthing-Fork 会在该文件夹旁显示红色的「还原本地修改(Revert Local Changes)」按钮。

直接点击该按钮,Syncthing 会丢弃手机端的本地差异,重新与电脑端的状态对齐。这不会影响电脑端的任何内容。iOS 端的 Möbius Sync 和 Synctrain 同样会在相应位置出现类似提示,操作逻辑相同。

21.4 双向同步文件夹产生了 .sync-conflict 冲突文件

这意味着在两端都做了编辑,且同步前没有互相感知对方的修改。参考「冲突文件处理」一节的流程:打开两个版本,手动合并需要保留的内容,保存主版本,删除冲突副本。

为避免再次发生,养成「离开当前设备前先确认同步完成」的习惯,或者减少在两台设备上同时编辑同一个文件的频率。

21.5 忽略规则设置后,被忽略的文件夹仍然出现在手机端

.stignore 文件在 Syncthing 建立连接时就会被读取。但如果文件夹已经在建立忽略规则之前就完成了同步(例如先同步了、后来才添加忽略规则),旧内容不会自动被删除。

解决方式:在手机端手动删除不应该存在的文件夹,然后在 Syncthing Web 界面点击「强制重新扫描」,之后 Syncthing 就会按照新的忽略规则工作。

21.6 .obsidian 在手机端无法创建或重命名

Android 系统的文件管理器通常不显示以 . 开头的文件夹,也无法直接创建。需要使用支持显示隐藏文件的第三方文件管理器(如 MiXplorer、Solid Explorer 等)来完成此类操作。参考「.obsidian 配置文件夹同步」一节中的变通方案。

21.7 同步卡住不动,进度条长时间不变

常见原因有以下几种:设备不在同一网络且中继服务器连接失败;某个文件被另一个程序锁定(如 Obsidian 正在写入);.stignore 规则语法错误导致扫描异常。

排查步骤:先在 Web 界面查看文件夹状态的详细信息(点击文件夹条目可以展开),通常会有具体的错误提示。如果显示「网络连接问题」类的错误,检查两端设备是否均能正常联网;如果显示「扫描错误」,检查 .stignore 文件的语法,确认每行格式正确。

21.8 升级到 Syncthing 2.0 后,1.x 设备无法连接

Syncthing 2.0 在同步协议上与 1.x 版本保持向下兼容,两者可以正常通信。但如果你发现升级后某台旧设备无法连接,可以检查以下两点:一是旧设备上的 Syncthing 版本是否过于陈旧(建议所有设备的 1.x 版本至少更新到 1.27 或以上);二是确认旧版本设备没有使用已在 2.0 中废弃的 CLI 单破折号选项(如果你通过脚本启动 Syncthing,需要将 -home 改为 --home)。

21.9 iOS 端同步长时间没有进展

iOS 端同步停滞最常见的原因是 App 已被系统挂起到后台。解决方式非常直接:重新打开 Möbius Sync 或 Synctrain,将 App 置于前台,等待同步完成。

如果频繁出现这个问题,可以采取以下措施:在「设置 → 通用 → 后台 App 刷新」中确认已为对应 App 开启;在 iPhone「设置 → 显示与亮度 → 自动锁定」中适当延长自动锁屏时间,使同步过程中屏幕不会过早熄灭;Synctrain 用户可以在 App 设置中找到「延长后台运行时间」或类似选项,申请系统分配更多后台时间。

21.10 Möbius Sync 提示超出 20MB 存储限制

Möbius Sync 免费版仅允许在 App 自身沙盒内存储最多 20MB 文件。对于 Obsidian 仓库同步,几乎必然会超出这个限制。

解决方式有两种:一是购买 App 内提供的「无限同步」内购(一次性买断),解锁后不再受存储限制;二是改用通过「Pick External Folder」指向 Obsidian 沙盒的方式——文件实际存储在 Obsidian 的沙盒中,不计入 Möbius Sync 自身的 20MB 配额,但这个功能本身也需要购买才能完整使用。

21.11 macOS 提示「无法验证开发者」或「已损坏」

这是 macOS Gatekeeper 机制对未经 App Store 分发的应用的常规提示。syncthing-macos 虽然经过 Apple 公证(Notarized),但首次运行仍可能触发安全提示。解决方式:打开「系统设置 → 隐私与安全性」,在底部找到对应的提示,点击「仍要打开」或「允许」。如果提示「应用已损坏」而非「无法验证」,可在终端中执行:

xattr -cr /Applications/Syncthing.app

执行后重新尝试打开应用。

21.12 macOS 端同步正常但 Obsidian 的文件变更感知延迟

macOS 上的 Syncthing 通过 FSEvents API 监听文件系统变化,通常延迟很低。如果 Obsidian 在文件被 Syncthing 更新后没有及时刷新显示,可以在 Obsidian 中按 Cmd+R 手动触发界面刷新,或者在「设置 → 文件与链接」中确认「自动更新内部链接」等选项的状态。Obsidian 本身对文件变化是被动监听的,在极少数情况下可能需要重启应用才能完全刷新索引。


22. 与 Obsidian 插件联动

Syncthing 本身在 Obsidian 之外独立运行,但社区开发了几款插件,可以让你在 Obsidian 内部查看同步状态、处理冲突,减少在两个应用之间切换的摩擦。以下两款值得关注。

22.1 Syncthing Integration

Syncthing Integration(插件 ID:syncthing-integration)是 Obsidian 社区插件库中目前已上架的 Syncthing 集成插件,由开发者 LBF38 维护,版本持续更新中(当前最新版本为 2.3.0)。

主要功能包括:在状态栏显示同步状态;列出仓库中所有 .sync-conflict 冲突文件并支持差异对比;支持查看文件的同步历史记录;提供 .stignore 文件的管理界面。安装方式:进入 Obsidian「设置 → 社区插件 → 浏览」,搜索「Syncthing Integration」安装启用,之后在插件设置中填入 Syncthing 的 API Key(位于 Syncthing Web 界面「操作 → 设置 → 常规 → API Key」)即可连接。

💡 说明 Syncthing Integration 连接的是本机运行的 Syncthing 实例(通过 http://127.0.0.1:8384),因此电脑端、Android 端和 iOS 端都可以安装使用,但各自只能看到本设备上的 Syncthing 状态。iOS 端使用时,请确保 Möbius Sync 或 Synctrain 正在前台运行,且 GUI 未开启 HTTPS。

22.2 Syncthing Manager

Syncthing Manager(GitHub:gustjose/obsidian-syncthing-manager)是另一款功能更丰富的控制面板插件,目前仍在向官方社区插件库提交审核,尚未正式上架,可以通过 BRAT 插件安装。

它的功能亮点在于:可视化冲突解决器,通过双栏 CodeMirror diff 视图直接在 Obsidian 内比较并合并冲突文件;右键菜单快速忽略(点击任意文件或文件夹可直接将其添加到 .stignore);实时同步进度条;支持暂停/恢复特定文件夹的同步;版本历史浏览与文件恢复。

⚠️ 注意(移动端 HTTPS 限制) 在 Android 端使用 Syncthing Manager 时,Obsidian Mobile 无法连接使用自签名证书的 HTTPS 地址。需要在 Syncthing 的「GUI 设置」中关闭 HTTPS,改用 HTTP(http://127.0.0.1:8384/)。由于地址限制为本机回环,安全性仍有保障。具体操作:打开 Syncthing-Fork → Web GUI → 操作 → 设置 → GUI 选项卡,取消勾选「使用 HTTPS 连接到 GUI」,保存后在插件设置中确认「Use HTTPS」为关闭状态。iOS 端同理,保持 HTTP 即可。

💡 说明 这两款插件与 Syncthing 本身完全独立——即使不安装任何插件,Syncthing 的同步功能也完全正常。插件只是提供了在 Obsidian 内管理 Syncthing 的便利界面,是可选的锦上添花。如果你更倾向于直接在浏览器中操作 Syncthing Web 界面,完全不需要安装它们。


23. 参考资源

  • Syncthing 官方文档docs.syncthing.net):涵盖忽略规则语法、同步模式、版本控制等所有功能的权威说明,遇到文档未覆盖的边缘情况时首先查阅这里。
  • Syncthing 官方下载页syncthing.net/downloads):Windows、macOS、Linux 各平台的下载入口。
  • syncthing-macos 官方 GitHubgithub.com/syncthing/syncthing-macos):macOS 原生应用包的源码仓库、安装说明、版本兼容性说明(包括 macOS 最低版本要求)及 Issue 追踪。
  • Syncthing-Fork(F-Droid 版)GitHubgithub.com/researchxxl/syncthing-android):Android 端应用的当前源码仓库(F-Droid 渠道)、安装说明与 Issue 追踪。
  • Syncthing-Fork(Google Play 版)GitHubgithub.com/nel0x/syncthing-android-gplay):Google Play 渠道的对应源码仓库。
  • Möbius Sync 官网mobiussync.com):iOS 端 Syncthing 客户端,包含详细的 FAQ 和使用说明,尤其是关于外部文件夹访问和 Obsidian 联动的配置文档。
  • Synctrain App Store 页面:在 App Store 搜索「Synctrain」即可找到,支持 iOS 和 iPadOS,基于 Syncthing 2.0 构建,提供选择性同步和媒体流功能。
  • iOS 端 Syncthing 联动 Obsidian 讨论forum.obsidian.md):搜索「Syncthing Möbius」或「Synctrain」可以找到大量社区用户在 iOS 端配置 Obsidian 同步的实际经验和踩坑记录。
  • SyncTrayzor 社区延续版github.com/GermanCoding/SyncTrayzor):如果偏好使用图形化壳子,可以关注此版本的维护动态。
  • Syncthing 官方论坛forum.syncthing.net):遇到疑难问题时,论坛中有大量真实使用场景的讨论和解决方案,搜索「iOS」、「macOS」或「Obsidian」可以找到大量针对性讨论。
  • Obsidian 论坛 Syncthing 相关讨论forum.obsidian.md):搜索「Syncthing」可以找到许多社区用户的实际配置经验和踩坑记录。
  • Syncthing Integration 插件github.com/LBF38/obsidian-syncthing-integration):已上架官方插件库的 Syncthing 集成插件,提供状态显示与冲突管理。
  • Syncthing Manager 插件github.com/gustjose/obsidian-syncthing-manager):功能更丰富的控制面板插件,可视化冲突解决,目前通过 BRAT 安装。