Syncthing 介绍与选型指南
开源 P2P 持续文件同步工具 Syncthing 的定位、BEP 协议与中继/发现机制架构拆解,并与 Nextcloud、Resilio Sync、Unison、rsync 做量化选型对比(数据实查于 2026-10-22)。
Syncthing 介绍与选型指南
目标:说清 Syncthing 是什么、凭什么架构做到「设备间无中心持续文件同步」,并以量化对比表给出它与 Nextcloud、Resilio Sync、Unison、rsync 的选型结论。本篇为认知篇,全部数据联网溯源自官方渠道(查询日期:2026-10-22),不含本地实测自述。
一、环境信息
- 调研对象:Syncthing 开源持续文件同步工具(官网 https://syncthing.net/)
- 版本基线:v2.1.7(代号 "Hafnium Hornet",GitHub Releases
releases/latest重定向实查,2026-10-22) - 溯源渠道:syncthing.net 官网与下载页、docs.syncthing.net 官方文档(Security/Relay 等页)、GitHub syncthing/syncthing 仓库页(星数经 shields.io 徽章取证,2026-10-22)
- 本篇性质:A1 认知篇,只做联网溯源与选型分析;安装、配置、命令的实测细节见本专栏《Ubuntu 22.04 安装 Syncthing 指南》、《Syncthing 2.1.7 配置参数详解》、《Syncthing 2.1.7 常用 CLI 命令与工具详解》
二、软件概述
2.1 一句话定位
Syncthing 是一个开源、去中心化(P2P)、持续运行的文件同步工具:在每台设备上运行一个 Syncthing 实例,彼此直接建立加密连接交换文件变更,没有中心服务器存储数据(来源:syncthing.net 官网首页 "open, trustworthy and decentralized file synchronization",2026-10-22)。
它的四个关键词(来源:syncthing.net,2026-10-22):
| 关键词 | 官方表述 | 含义 |
|---|---|---|
| 开源 Open | "Syncthing is open source"(MPL-2.0 许可证,仓库 LICENSE) | 代码可审计、免费使用 |
| 可信 Trustworthy | 数据只存在于你的设备之间 | 无第三方云存储你的文件 |
| 去中心化 Decentralized | 设备直连 P2P,无中心文件服务器 | 无单点故障、无容量配额 |
| 持续 Continuous | 监视文件系统变化,变更即时同步 | 与 rsync 式「手动/定时执行」相对 |
2.2 身份信息(实查官方渠道,2026-10-22)
| 项目 | 值 | 来源 |
|---|---|---|
| 开发语言 | Go(单二进制,静态编译) | 官网下载页各平台均为单个可执行文件 |
| 许可证 | MPL-2.0(Mozilla Public License 2.0) | GitHub 仓库 LICENSE 文件 |
| 维护方 | Syncthing Foundation(非营利),社区驱动 | 官网 "About" |
| 最新稳定版 | v2.1.7 "Hafnium Hornet"(2026-10-20 构建,含 syncthing 2.1.6/2.1.7 等历史版) | GitHub Releases / apt 源 stable-v2 组件 |
| GitHub 星数 | 90k | shields.io GitHub Stars 徽章,2026-10-22 |
| 发布节奏 | 活跃:v2 主线自 2025 年起迭代,apt 源同时维护 stable(v1 系列 1.30.0)与 stable-v2(2.1.7)两条版本线 | apt.syncthing.net 仓库 InRelease 组件列表 |
💡 技术拓展:v1 与 v2 的关系——Syncthing v2 是 2025 年开始发布的第二代主线(配置/数据目录布局、REST/CLI 命令结构有变化),官方 apt 源中
stable组件继续提供 v1 系列(当前 1.30.0),stable-v2组件提供 v2 系列(当前 2.1.7)。两代并存是过渡期官方策略(来源:apt.syncthing.net 仓库元数据,2026-10-22)。本专栏文档均以 v2.1.7 为准。
三、核心架构
3.1 架构总览
Syncthing 的架构可以概括为「每设备一个守护进程 + 全互联直连 + 三层连接建立机制」:
[设备A] ←— TLS 加密直连(TCP/QUIC 22000)—→ [设备B]
| ↑
| ① 本地发现:局域网广播/组播 | ③ 中继转发(无直连时兜底)
| IPv4 广播 / IPv6 组播 21027 relay://...:22067
↓ |
② 全局发现:向 discovery-*.syncthing.net |
周期公告 deviceID ↔ 公网地址映射 —————————┘
三个要点(来源:docs.syncthing.net/users/security.html 与本仓库 serve 命令的 STTRACE 包清单对照,2026-10-22):
- 设备身份 = Device ID:每台设备首次启动时生成本地证书,Device ID 是证书指纹(如
BITUNOQ-VKBHIFH-2UWCK4D-...形式的分组大写串)。设备互信以「双方各自添加对方 Device ID」为准,类似 SSH 的指纹信任模型(来源:docs.syncthing.net Security 页 "Introduction: When two devices each have the other's device ID...",2026-10-22)。 - 传输全程 TLS 加密:设备间连接与到发现服务器的连接均为 TLS,且校验对端证书(来源:docs.syncthing.net/users/security.html "All connections are protected using TLS... The connection to the discovery server is encrypted using TLS and the discovery server certificate is verified",2026-10-22)。
- 协议层独立成包:官方将协议命名为 BEP(Block Exchange Protocol),按块(block)交换文件内容并校验哈希,支持增量与断点续传(来源:docs.syncthing.net "BEP: the Block Exchange Protocol"、官方规范页,2026-10-22)。
💡 技术拓展:文件同步架构的两种主流形态——
形态 代表 数据路径 特点 C/S 集中式 Nextcloud 客户端 ↔ 中心服务器 ↔ 客户端 集中管控、可建共享链接;服务器是容量与带宽瓶颈、单点故障 P2P 去中心化 Syncthing、Resilio Sync 设备 ↔ 设备直连 无中心瓶颈、内网直连快;设备需在线才能互相同步 Syncthing 采用 P2P 形态:数据永不经过第三方服务器,适合「自己的多台设备互相同步」;若需要「对团队/公众提供文件分享门户」,集中式形态更合适(选型见第七章)。
3.2 发现机制(找到对方设备)
连接建立的前提是「找到对方地址」。Syncthing 有三层发现机制,逐层兜底(来源:docs.syncthing.net Security 页 Global/Local Discovery 段落 + Global Discovery 规范页,2026-10-22):
| 机制 | 工作方式 | 周期 | 开关 |
|---|---|---|---|
| 本地发现(Local Discovery) | IPv4 局域网广播 + IPv6 组播(组播地址 [ff12::8384]:21027,UDP 21027 端口),报文含设备 ID 与监听端口 | 每 30 秒 | localAnnounceEnabled |
| 全局发现(Global Discovery) | 向官方发现服务器集群(discovery-lookup / discovery-announce-v4 / -v6.syncthing.net)公告「Device ID → 外部 IP+端口」映射;需要连别人时按 Device ID 查询 | 每 30 分钟公告 | globalAnnounceEnabled |
| 引入(Introducing) | 已互信的第三方设备把自己的设备列表「介绍」给新设备,减少手工添加 | 事件驱动 | introducer 设备属性 |
官方文档同时明确了信息泄露边界:开启全局发现后,互联网上的窃听者可推断「哪些机器在跑 Syncthing 及其设备 ID」;发现服务器运营者可将设备地址与 IP 关联(来源:docs.syncthing.net/users/security.html "Information Leakage" 一节,2026-10-22)。对隐私敏感的内网场景可关闭全局发现仅留本地发现。
3.3 连接与中继(连不上怎么办)
找到地址后,Syncthing 按优先级选择连接方式(来源:docs.syncthing.net/users/relay.html + config 默认值,2026-10-22):
| 优先级 | 连接方式 | 说明 |
|---|---|---|
| 1 | TCP LAN(tcp://,22000) | 同内网直连,速度最优 |
| 2 | QUIC LAN(quic://,22000/UDP) | 现代加密传输,NAT 穿透更友好 |
| 3 | TCP WAN / QUIC WAN | 跨公网直连(配合 NAT 穿透) |
| 4 | 中继 Relay(relay://,22067) | 双方都无法直连时,经官方中继池 relays.syncthing.net 加密转发(中继只见密文) |
官方说明:中继用于「身后有严格防火墙/NAT 导致无法直连」的兜底场景,数据本身仍是端到端 TLS 加密、中继无法读取内容(来源:docs.syncthing.net/users/relay.html "Relaying... the traffic is encrypted end to end",2026-10-22)。如对官方中继不放心,可用 syncthing-relaysrv(v2 独立 deb 包)自建中继服务器(来源:GitHub syncthing/docs relay 自建说明,2026-10-22)。
3.4 进程与端口清单
| 端口/路径 | 协议 | 用途 |
|---|---|---|
| 8384/TCP | HTTP(S) | Web GUI 与 REST API(默认仅监听 127.0.0.1) |
| 22000/TCP | TCP | 设备同步数据(BEP) |
| 22000/UDP | QUIC | 设备同步数据(QUIC 变体) |
| 21027/UDP | 广播/组播 | 本地发现(IPv4 广播、IPv6 组播 [ff12::8384]:21027) |
| 22067/TCP | TCP | 中继协议(仅运行 syncthing-relaysrv 时对外提供) |
来源:docs.syncthing.net/users/firewall.html(FAQ "Ports" 页),2026-10-22。
3.5 进程内部模块(源自 serve 的 STTRACE 包清单)
syncthing serve 暴露的调试包清单本身就是架构模块图(来源:syncthing 官方 serve --help 的 Logging Facilities 一节,2026-10-22):
| 模块包 | 职责 |
|---|---|
| api | REST API 与 Web GUI 服务 |
| beacon | 组播/广播发现报文收发 |
| connections | 连接建立与复用 |
| discover | 设备发现(本地 + 全局) |
| model | 同步核心(文件夹/设备状态机) |
| protocol | BEP 协议编解码 |
| relay/client | 中继客户端 |
| scanner | 文件扫描与哈希 |
| versioner | 文件版本控制 |
| nat/pmp/upnp/stun | NAT 穿透族(UPnP、NAT-PMP、STUN) |
| db/sqlite | SQLite 索引数据库(v2 为 index-v2) |
| ur | 匿名使用统计上报(默认关闭待确认,urAccepted) |
四、核心功能特性
(来源:syncthing.net 官网 Features 与 docs.syncthing.net/users/,2026-10-22)
| 特性 | 说明 |
|---|---|
| 跨平台 | Windows / macOS / Linux / BSD / Android(Android 为第三方客户端 Syncthing-Fork) |
| Web GUI | 每设备自带 Web 管理界面(8384),无需独立管理端 |
| 文件版本控制 | 垃圾桶(trashcan)、简易(simple)、阶梯(staggered)、外部命令(external)四类版本器 |
| 单向/双向 | 文件夹类型 sendreceive(双向)、sendonly(仅发送)、receiveonly(仅接收)、receive-encrypted(加密接收) |
| 忽略规则 | .stignore 按模式排除文件(支持 ?*[] 通配与 #comment) |
| 断点续传与增量 | BEP 按块(默认 128KiB 块)哈希交换,只传差异块 |
| 加密不可信节点 | receive-encrypted:中转设备只存密文,无密码无法读取 |
| 权限与所有权同步 | 可选同步属主/属组/xattr(类 Unix) |
| REST API + CLI | 全部管理操作既有 Web GUI,也有 REST API(X-API-Key)与 syncthing cli 命令 |
五、快速开始(最小可用示例)
以下最小流程摘自官方文档(来源:docs.syncthing.net/users/ 与 syncthing.net/downloads/,2026-10-22;命令在本专栏部署篇中已逐条实测并给出真实回显):
- 安装(Debian/Ubuntu 官方 apt 源):
# 导入官方签名密钥(来源:syncthing.net/downloads/,2026-10-22)
curl -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
# 写入 apt 源(v2 系列用 stable-v2 组件,详见部署篇)
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" > /etc/apt/sources.list.d/syncthing.list
apt-get update && apt-get install syncthing
- systemd 托管启动(模板服务
syncthing@用户名):
systemctl enable --now syncthing@yourname
- 浏览器打开
http://127.0.0.1:8384进入 Web GUI,添加另一台设备的 Device ID 互信后即可建立同步。
完整的逐条命令、真实回显、排障实录见 《Ubuntu 22.04 安装 Syncthing 指南》。
六、适用场景与限制
6.1 适用场景
| 场景 | 为什么适合 |
|---|---|
| 个人多机/多端文件同步 | 无配额、无订阅费,数据不经过第三方 |
| 服务器之间配置/备份目录互备 | 持续监视 + 增量块传输,配合 versioning 防误删 |
| 移动办公(笔记本 ↔ 家里 NAS) | 全局发现 + 中继兜底,跨网络自动找到对方 |
| 隐私敏感数据流转 | 端到端 TLS;receive-encrypted 让中转节点只见密文 |
| 离线优先协作 | 各设备本地都有全量副本,断网后自动补同步 |
6.2 限制与不适用
| 限制 | 影响 | 应对 |
|---|---|---|
| 设备须在线才能同步 | 「A 改文件、B 关机」时 B 需等开机后才收到 | 加一台常开 NAS/服务器做中转节点 |
| 无浏览器访问门户 | 不像 Nextcloud 有 Web 文件门户/分享链接 | 门户需求选 Nextcloud,或仅以 Syncthing 做底层同步 |
| 大规模海量小文件首次扫描耗时 | 首次建库需全量哈希 | 排除无关目录、提高 hashers 并发 |
| 权限/属主跨平台语义差异 | Windows 与 Unix 属主模型不同 | 跨平台文件夹关闭所有权同步 |
| 实时性受扫描器约束 | 文件系统监听延迟默认 10 秒级别 | 保持 fsWatcherEnabled 默认开启 |
(来源:docs.syncthing.net/users/FAQ 与 config 文档夹类型/版本器章节,2026-10-22)
七、同类选型对比
7.1 候选对象与量化数据
量化列均实查于 2026-10-22:星数与最新 release 取自 shields.io GitHub 徽章(GitHub 仓库页同一数据源);许可证与语言取自各项目官方仓库/官网;Resilio Sync 为商业闭源软件,无公开代码仓库,星数列以「闭源」标注。
| 项目 | 定位 | 架构 | 语言 | 许可证 | 最新版本 | GitHub 星数 | 数据中心 | 版本控制 | Web GUI |
|---|---|---|---|---|---|---|---|---|---|
| Syncthing | 设备间持续文件同步 | P2P 全互联 | Go | MPL-2.0 | v2.1.7(2026-10-20) | 90k | 无(直连) | 四类版本器 | 有(每设备) |
| Nextcloud | 自托管云盘+协作平台 | C/S 集中式 | PHP | AGPL-3.0 | v33.0.10 | 37k | 需要服务器 | 有(版本历史) | 有(门户级) |
| Resilio Sync | 商业 P2P 同步 | P2P(BT 协议变体) | 闭源 | 商业许可 | v3.x(官网发行) | 闭源 | 无(直连) | 有(Selective Sync/版本历史) | 有 |
| Unison | 双向文件同步器 | 双端点 SSH 直连 | OCaml | GPL-3.0 | v2.54.0 | 5.5k | 无 | 冲突副本(非版本器) | 无(GTK 可选) |
| rsync | 增量文件传输工具 | 单向推送/拉取 | C | GPL-3.0 | v3.5.1 | 5.3k | 无 | 无(配合 --backup 有限) | 无 |
7.2 关键差异解读与选型建议
- 同步模型:只有 Syncthing、Resilio 是「持续运行、双向、多设备全互联」;Unison 是「手动/定时触发、双向、两两同步」(冲突需人工处理);rsync 是「单向命令行传输」,多设备同步要自己编排脚本。
- 控制面:Syncthing 每设备自带 Web GUI + REST API,适合无头服务器;Nextcloud 有完整 Web 门户(分享链接、在线预览、日历/通讯录生态),但所有流量与存储压在服务器上。
- 信任模型:Syncthing/Unison/rsync 开源可审计;Resilio 闭源,官方免费版有功能限制(如 SyncHome 高级特性付费)。
- 「如果……则……」选型:
- 如果要在自己的多台设备间持续同步且数据不落第三方 → Syncthing;
- 如果要对团队/公众提供文件门户、分享链接、在线办公 → Nextcloud;
- 如果设备可安装闭源软件、追求 BT 级大文件分发性能且接受商业许可 → Resilio Sync;
- 如果只有两台机器偶发双向同步、可接受手动触发与冲突处理 → Unison;
- 如果只是脚本化单向备份/传输(不做持续同步)→ rsync。
- 版本节奏提示:本表版本号为查询日(2026-10-22)的最新稳定版,选型时建议复查各官方发布页。
八、参考链接
- Syncthing 官网:https://syncthing.net/
- 官方下载与 apt 源说明:https://syncthing.net/downloads/
- 官方文档(安全模型/发现/中继):https://docs.syncthing.net/users/security.html 、https://docs.syncthing.net/users/relay.html
- GitHub 仓库:https://github.com/syncthing/syncthing
- 本专栏部署篇:《Ubuntu 22.04 安装 Syncthing 指南》
- 本专栏配置篇:《Syncthing 2.1.7 配置参数详解》
- 本专栏命令篇:《Syncthing 2.1.7 常用 CLI 命令与工具详解》