Skip to content

备份工具 (Syncthing)

Syncthing 是一个开源的、去中心化的文件同步工具,可以在多个设备之间自动同步文件,无需云服务器,保护隐私安全。

🎯 功能特点

  • 去中心化:无需中央服务器,设备间直接同步
  • 实时同步:文件修改后立即同步到其他设备
  • 端到端加密:所有传输都经过加密
  • 跨平台支持:支持 Windows、macOS、Linux、Android、iOS
  • 自动发现:自动发现局域网内的设备
  • 版本控制:保留文件历史版本
  • 选择性同步:可以选择同步哪些文件夹

🚀 Docker 部署

1. 创建配置文件

bash
mkdir -p /volume1/docker/syncthing
cd /volume1/docker/syncthing

2. Docker Compose 配置

创建 docker-compose.yml

yaml
version: '3'
services:
  syncthing:
    image: syncthing/syncthing:latest
    container_name: syncthing
    hostname: 'HX-NAS-Syncthing'
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /volume1/docker/syncthing:/var/syncthing
      - /volume1/backup:/backup  # 备份文件夹
    ports:
      - 8384:8384   # Web 管理界面
      - 22000:22000/tcp  # 文件同步端口
      - 22000:22000/udp  # 文件同步端口
      - 21027:21027/udp  # 本地发现端口
    restart: unless-stopped
    networks:
      - synology
    devices:
      - /dev/kmsg

networks:
  synology:
    external: true

3. 启动容器

bash
docker-compose up -d

4. 访问管理界面

打开浏览器访问:http://nas-ip:8384

首次访问需要设置管理员密码。

⚙️ 配置步骤

1. 初始设置

  1. 访问 Web 管理界面
  2. 设置管理员用户名和密码
  3. 修改设备名称(可选)
  4. 启用身份验证

2. 添加远程设备

  1. 点击右上角"添加远程设备"
  2. 输入远程设备的 ID
  3. 选择要共享的文件夹
  4. 设置同步模式(发送/接收/双向)

获取设备 ID

  • 在另一台设备的 Syncthing 界面中找到设备 ID
  • 或者扫描二维码获取

3. 共享文件夹

  1. 点击要共享的文件夹
  2. 选择"共享给"目标设备
  3. 设置文件夹权限
  4. 确认同步路径

4. 同步模式

发送模式

  • 只发送文件,不接收
  • 适合备份场景

接收模式

  • 只接收文件,不发送
  • 适合从主设备同步

双向同步

  • 双向同步修改
  • 适合多设备协作

📋 使用场景

场景 1:NAS 间自动备份

配置

  • NAS A → 发送模式
  • NAS B → 接收模式
  • 定期备份重要数据

场景 2:多设备文件同步

配置

  • 所有设备 → 双向同步
  • 工作文件夹自动同步到所有设备
  • 随时随地访问最新文件

场景 3:手机照片自动备份

配置

  • 手机安装 Syncthing Android/iOS
  • 设置照片文件夹自动同步
  • NAS 自动接收备份

🔧 高级配置

1. 版本控制

Syncthing 支持多种版本控制策略:

简单版本控制

  • 保留指定数量的历史版本
  • 默认保留 5 个版本

定时版本控制

  • 按时间间隔保留版本
  • 适合长期归档

外部版本控制

  • 使用外部工具管理版本
  • 高度自定义

2. 忽略模式

创建 .stignore 文件,忽略不需要同步的文件:

.DS_Store
Thumbs.db
*.tmp
*.log
@eaDir/

3. 带宽限制

在设置中配置带宽限制:

  • 下载限速:避免占用全部带宽
  • 上传限速:保证其他服务可用
  • 局域网限速:通常不需要限制

4. 计划任务

设置同步时间段:

  • 工作时间暂停同步
  • 夜间全速同步
  • 按需手动同步

️ 安全建议

1. 启用 HTTPS

修改启动参数启用 HTTPS:

yaml
environment:
  - STGUIADDRESS=0.0.0.0:8384
  - STGUIHTTPS=true

2. 强密码策略

  • 管理员密码至少 12 位
  • 包含大小写字母、数字、特殊符号
  • 定期更换密码

3. 防火墙配置

仅开放必要端口:

bash
# 允许 Web 管理界面
ufw allow 8384/tcp

# 允许文件同步
ufw allow 22000/tcp
ufw allow 22000/udp

# 允许本地发现
ufw allow 21027/udp

4. 设备认证

  • 每次添加新设备都需要确认
  • 检查设备 ID 指纹
  • 不要接受未知设备的连接请求

📊 监控与维护

1. 状态检查

定期检查:

  • 同步状态是否正常
  • 设备连接是否稳定
  • 磁盘空间是否充足
  • 错误日志是否有异常

2. 日志查看

Web 界面 → 操作 → 日志:

  • 查看同步日志
  • 排查连接问题
  • 分析性能瓶颈

3. 数据库清理

定期清理索引数据库:

bash
docker exec syncthing syncthing --reset-database

4. 性能优化

SSD 缓存

  • 将索引数据库放在 SSD 上
  • 提升同步速度

并发连接

  • 增加最大并发连接数
  • 适合大量小文件同步

块大小调整

  • 大文件使用更大的块
  • 减少索引大小

🔧 常见问题

Q1: 设备无法发现怎么办?

A:

  1. 检查设备 ID 是否正确
  2. 确保防火墙开放端口
  3. 检查是否在同一网络
  4. 手动添加设备地址

Q2: 同步速度慢怎么办?

A:

  1. 检查网络连接质量
  2. 关闭带宽限制
  3. 使用有线网络连接
  4. 检查磁盘 I/O 性能

Q3: 文件冲突怎么办?

A:

  1. Syncthing 会自动创建冲突副本
  2. 检查 .sync-conflict 文件
  3. 手动合并或选择版本
  4. 启用版本控制保留历史

Q4: 如何排除特定文件?

A:

  1. 在文件夹设置中添加忽略模式
  2. 编辑 .stignore 文件
  3. 使用通配符匹配文件名
  4. 排除系统文件和临时文件

Q5: 可以同步到云端吗?

A:

  • Syncthing 本身不支持云端同步
  • 可以配合 rclone 使用
  • 或者使用 Nextcloud 等云存储方案

💡 提示:Syncthing 适合设备间的直接同步,如果需要云端备份,建议配合其他工具使用。

更新时间: 2026-03-18