Syncthing:开源去中心化文件同步,替代 Resilio Sync 和网盘
前言
文件在多台设备之间同步,最省事的方案是网盘 ——iCloud、OneDrive、Google Drive。但有几个问题:存在别人服务器上、有容量限制、大文件同步慢。
Resilio Sync(以前的 BitTorrent Sync)是个好方案 ——P2P 直传,不经过中心服务器。但它闭源收费了。
Syncthing 是开源替代。纯 P2P、去中心化、端到端加密。没有中心服务器收集你的数据,设备之间直接用 TLS 加密传输。
Syncthing 怎么工作的
每台设备生成一个唯一设备 ID,互相添加好友之后自动发现对方。在同一局域网内走 LAN 直连,不在同一网络时通过全球发现服务器(或中继服务器)建立连接。
关键概念:
- 设备 ID:每台设备的身份证,添加设备时需要
- 文件夹 ID:同步单元的标识,两台设备上一个文件夹 ID 相同就是同一个同步任务
- 中继:P2P 直连失败时的兜底方案,数据仍然端到端加密
Debian 安装
# 添加官方 APT 源curl -fsSL https://syncthing.net/release-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/syncthing-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update && sudo apt install syncthing -y以用户服务方式运行(不占 root):
systemctl --user enable --now syncthing默认监听 http://127.0.0.1:8384。如果要远程访问管理界面,编辑 ~/.config/syncthing/config.xml,把 <address>127.0.0.1:8384</address> 改成 0.0.0.0:8384。
Docker 部署
services: syncthing: image: syncthing/syncthing:latest container_name: syncthing environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./config:/config - ./data:/data ports: - "8384:8384" # Web GUI - "22000:22000" # TCP 文件传输 - "22000:22000/udp" # QUIC 传输1 collapsed line
restart: unless-stopped使用流程
- 在设备 A 打开
http://IP:8384,记下「设备标识」 - 在设备 B 同样打开,点「添加远程设备」,输入设备 A 的 ID
- 设备 A 收到请求后确认
- 在设备 A 添加共享文件夹,设备 B 自动收到同步邀请
- 开始同步
之后两台设备上的共享文件夹会实时保持同步。修改文件、新增文件、删除文件 —— 所有操作都会同步到对方。
冲突处理
两台设备同时修改了同一个文件怎么办?Syncthing 不会静默覆盖 —— 它会保留冲突版本,文件名加 .sync-conflict-日期-时间 后缀。你手动对比后决定保留哪个。
忽略特定文件
编辑文件夹的「忽略模式」:
*.tmp.DS_StoreThumbs.dbnode_modules这些文件不会被同步。对开发项目来说,node_modules 和 .git 是必加的。
版本控制(回收站)
Syncthing 支持文件版本管理。在文件夹设置里选:
- 简易版本控制:保留最近 N 个版本
- 回收站式:删除的文件移到
.stversions目录,N 天后真正删除
这个功能救过我一次 —— 不小心删了一个配置文件,从 .stversions 里捡回来了。
常见问题
「设备未连接」:检查双方防火墙是否放行 22000 端口(TCP + UDP),同一局域网优先走直连。
同步很慢:检查是不是在走中继服务器(设置里可以看到)。中继带宽有限,局域网内不走中继才是正常的。
Docker 容器时间不对:加 TZ=Asia/Shanghai 环境变量。
总结
Syncthing 解决了一个很朴素的需求:把自己的文件在多台设备之间同步,不经过任何第三方服务器。
开源、P2P、加密、去中心化 —— 这几个词放在一起就是 Syncthing 的核心价值。Docker 一条命令部署,Web GUI 管理直观,日常使用几乎无感。
如果你在用网盘同步文件,试试 Syncthing。省下订阅费的同时,数据也真正握在自己手里。