前言

对于我这种懒人,多设备敲代码一直是一件麻烦事。用git吧,先不说每到一个电脑还得clone一次,而且每次转移设备时还得提交一次,而且作为学生而不是社畜,我很难预测我接下来是否需要换设备,总不能每一次合上电脑就要提交一次吧。我也尝试过webdav和onedrive,但是体验都相当糟糕。偶然间看到还有一个开源软件Syncthing是专门搞同步的,甚至还有版本管理,也有类似gitignore的那种忽略模式,就想用来试试了。

配置

使用Docker部署中继服务器和发现服务器

对于国内的网络,尤其是校园网这种大内网一般都得通过中继服务器来进行数据传输。而Syncthing自带的基本都在国外,体验可想而知了。顺手建一个发现服务器免得到处输ID也是极好的。

这种服务用docker部署再好不过了。

version: "3"
services:
    # 自建syncthing的发现服务器 discovery-servier
  syncthing_discovery_server:
    image: syncthing/discosrv
    container_name: syncthing-discovery-server
    command: -debug -listen=":8443" 
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./syncthing/discosrv:/var/stdiscosrv
    ports:
      - 8848:8443 # Listen address (default “:8443”)
    restart: always

# 自建syncthing的中继服务器 syncthing-relay-server
  syncthing_relay_server:
    image: syncthing/relaysrv:latest
    container_name: syncthing-relay-server
    command: -debug -pools="" -listen=":22067"
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./syncthing/strelaysrv:/var/strelaysrv
    ports:
      - 8858:22067  # 中继服务器的数据连接端口(必须开启)
      #- 22070:22070  # 用于公用的中继服务器池,显示数据传输、客户端数量等状态,可不开启
    restart: always

然后进入docker控制台,查看这两个服务各自的ID,待会要用。

Windows端安装设置

原先在win10生效的静默启动方法在win11不生效了,这里建议使用GUI。
https://github.com/Martchus/syncthingtray

使用Docker部署客户端

总不能两台电脑同时开机同步吧,肯定要部署一个客户端在服务器上作文中转站啊。

version: "3"
services:
  syncthing:
    image: syncthing/syncthing
    container_name: syncthing
    hostname: opi-sync
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./data:/var/syncthing
    ports:
      - 8384:8384 # Web UI
      - 22000:22000/tcp # TCP file transfers
      - 22000:22000/udp # QUIC file transfers
      - 21027:21027/udp # Receive local discovery broadcasts
    restart: unless-stopped

客户端配置中继服务器和发现服务器

在设置->连接中,将协议监听地址修改成

default, relay://服务器ip:8858/?id=转发服务器ID

全局发现器修改成

default, https://服务器ip:8848/?id=发现服务器ID

接下来享受Syncthing带来的服务吧!

使用体验

目前这个方案已经用了一个星期,感觉还是很不错的。唯一一次出现冲突是我在两台机子没同步完的时候改了文件。不过Syncthing会保留两个文件让我们自己合并冲突,还算不错。同步速度非常快,这么多小文件也没影响性能,还是不错的。