Syncthing 介绍与选型指南

开源 P2P 持续文件同步工具 Syncthing 的定位、BEP 协议与中继/发现机制架构拆解,并与 Nextcloud、Resilio Sync、Unison、rsync 做量化选型对比(数据实查于 2026-10-22)。

Syncthing备份恢复2026/10/22

Syncthing 介绍与选型指南

目标:说清 Syncthing 是什么、凭什么架构做到「设备间无中心持续文件同步」,并以量化对比表给出它与 Nextcloud、Resilio Sync、Unison、rsync 的选型结论。本篇为认知篇,全部数据联网溯源自官方渠道(查询日期:2026-10-22),不含本地实测自述。

一、环境信息

二、软件概述

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 星数90kshields.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):

  1. 设备身份 = 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)。
  2. 传输全程 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)。
  3. 协议层独立成包:官方将协议命名为 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):

优先级连接方式说明
1TCP LAN(tcp://,22000)同内网直连,速度最优
2QUIC LAN(quic://,22000/UDP)现代加密传输,NAT 穿透更友好
3TCP 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/TCPHTTP(S)Web GUI 与 REST API(默认仅监听 127.0.0.1)
22000/TCPTCP设备同步数据(BEP)
22000/UDPQUIC设备同步数据(QUIC 变体)
21027/UDP广播/组播本地发现(IPv4 广播、IPv6 组播 [ff12::8384]:21027)
22067/TCPTCP中继协议(仅运行 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):

模块包职责
apiREST API 与 Web GUI 服务
beacon组播/广播发现报文收发
connections连接建立与复用
discover设备发现(本地 + 全局)
model同步核心(文件夹/设备状态机)
protocolBEP 协议编解码
relay/client中继客户端
scanner文件扫描与哈希
versioner文件版本控制
nat/pmp/upnp/stunNAT 穿透族(UPnP、NAT-PMP、STUN)
db/sqliteSQLite 索引数据库(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;命令在本专栏部署篇中已逐条实测并给出真实回显):

  1. 安装(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
  1. systemd 托管启动(模板服务 syncthing@用户名):
systemctl enable --now syncthing@yourname
  1. 浏览器打开 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 全互联GoMPL-2.0v2.1.7(2026-10-20)90k无(直连)四类版本器有(每设备)
Nextcloud自托管云盘+协作平台C/S 集中式PHPAGPL-3.0v33.0.1037k需要服务器有(版本历史)有(门户级)
Resilio Sync商业 P2P 同步P2P(BT 协议变体)闭源商业许可v3.x(官网发行)闭源无(直连)有(Selective Sync/版本历史)有
Unison双向文件同步器双端点 SSH 直连OCamlGPL-3.0v2.54.05.5k无冲突副本(非版本器)无(GTK 可选)
rsync增量文件传输工具单向推送/拉取CGPL-3.0v3.5.15.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)的最新稳定版,选型时建议复查各官方发布页。

八、参考链接

  1. Syncthing 官网:https://syncthing.net/
  2. 官方下载与 apt 源说明:https://syncthing.net/downloads/
  3. 官方文档(安全模型/发现/中继):https://docs.syncthing.net/users/security.html 、https://docs.syncthing.net/users/relay.html
  4. GitHub 仓库:https://github.com/syncthing/syncthing
  5. 本专栏部署篇:《Ubuntu 22.04 安装 Syncthing 指南》
  6. 本专栏配置篇:《Syncthing 2.1.7 配置参数详解》
  7. 本专栏命令篇:《Syncthing 2.1.7 常用 CLI 命令与工具详解》