外观
Syncthing:设备之间的点对点同步
在你自己的设备之间同步文件夹,数据直接在设备间传输,不经过中间服务器。适合把电脑上的工作目录实时同步到 NAS,或者在两台异地 NAS 之间同步。
同步不是备份
Syncthing 会把删除操作同步到所有设备。误删一个文件,几秒后它在每台设备上都消失了。要用它做备份,必须开启文件版本控制功能,并且把 NAS 端设为「仅接收」。区别见3-2-1 原则。
部署
yaml
services:
syncthing:
image: syncthing/syncthing:latest
container_name: syncthing
restart: unless-stopped
hostname: nas-syncthing
ports:
- "8384:8384"
- "22000:22000/tcp"
- "22000:22000/udp"
- "21027:21027/udp"
volumes:
- /vol1/docker/syncthing/config:/var/syncthing/config
- /vol1/sync:/var/syncthing/data端口说明:8384 是管理界面,22000 是数据传输,21027 用于局域网设备发现。
关键配置
- 管理界面加密码,默认无密码时局域网内任何人都能改配置。
- NAS 端的共享目录设为「仅接收」,防止 NAS 上的改动反向覆盖源端。
- 开启文件版本控制(简易版本或交错版本),这是防误删的唯一手段。
- 异地同步时,两端设备互相添加设备 ID 即可,见异地备份。
数据与备份
config 目录里是设备 ID、密钥和同步配置,值得备份。同步的数据本身按常规策略处理。
已知坑
- 同步大量小文件时,扫描和索引会占用不少 CPU 和内存。
- 两端同时修改同一个文件会产生冲突副本,文件名里带
.sync-conflict,需要手动处理。 - 容器内的文件属主由
PUID/PGID决定,与 NAS 用户不匹配时会出现权限问题。