多平台文件同步/传输神器——Syncthing使用教程

自从在学校和家里都放上了NAS之后,由于网络的问题,从学校远程访问家中/从家中远程访问学校总会遇到速度的限制。迫于无奈,使用文件同步来实时同步两台NAS上的文件,不仅起到加速访问的功能,还能够保证数据的异地备份。

下载和安装

Syncthing在开发之际确实超前地考虑到全平台的通用性,因此采用了浏览器/服务器(B/S)架构以适应绝大多数操作系统和体系结构。但是,这样设计的代价是易用性的部分缺失,你将会看到下面介绍的部分非Base Syncthing的“修改”版本(SyncTrayzor、syncthing-macos等)都是为了解决例如开机自启动后台运行避免使用WebGUI等问题而开发。因此在下一步开始时,你可以根据自身的情况下选择合适的版本。

Syncthing支持的操作系统和硬件架构很多,这里只介绍两个常用的平台:Windows、MacOS、Linux和Android。

Base Syncthing安装完毕后默认的Web访问端口为8384默认可以使用127.0.0.1:8384访问WebGUI。而自带桌面GUI的版本则不需要使用浏览器操作。

Windows

Windows端直接在官方网站下载Base Syncthing安装即可,安装完后点击启动。

Windows平台还有SyncTrayzor可以使用,他是自带图形界面而非基本包的WebGUI。

MacOS

MacOS推荐安装syncthing-macos。和上述的Windows一样,这个版本支持桌面GUI而非基本包的WebGUI。

Linux

根据你的发行版,如果发行版为Debian系,那么可以使用添加apt源的方式安装。当然你也可以使用源码自行编译,不过这不属于本教程的内容。:-(

目前Debian的发行版官方apt仓库中有Syncthing,但是版本较低,不建议使用。

  1. 安装发布密钥

    sudo curl -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
  2. 添加apt:稳定发布渠道

    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
  3. [可选]添加apt:优先发布渠道

    echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing candidate" | sudo tee /etc/apt/sources.list.d/syncthing.list
  4. 更新apt源

    sudo apt-get update -y
    sudo apt-get install syncthing -y
  5. 启动Syncthing
    可以直接使用命令启动。注意,Syncthing不需要以root权限运行,也不建议使用root权限运行。

    syncthing

    如此启动后,Syncthing会在该控制台输出日志信息。
    也可以按照以下说明加入系统服务以开机自启动。

    sudo systemctl enable syncthing-resume.service

Android

该平台直接从Google Play上搜索下载即可,国内用户可以从F-Droid平台下载apk安装包。

软件界面

  1. WebGUI地址设置
    在首次启动Base Syncthing时会发现,非本机无法访问Syncthing。因此需要访问位于服务器上的Syncthing(无法直接使用127.0.0.1本机访问)时,需要对Syncthing进行IP和端口的配置。在配置之前,需要使用当前用户预先运行Syncthing一次,以生成默认配置文件。

打开~/.config/syncthing/config.xml,找到约第32<address>127.0.0.1:8384</address>,将其中的127.0.0.1:8384修改为0.0.0.0:端口,保存后重启Syncthing生效。这样就可以使WebGUI监听来自任何地址的访问了。

  1. 匿名使用报告
    首次进入,会弹出匿名使用的许可,根据自己的意愿选择即可。

匿名使用报告

  1. 主界面
    主界面十分简洁。

    • 左边为所有参与同步的文件夹。刚刚安装完成的Syncthing中,其已经默认添加了一个文件夹。
    • 右边为当前设备的信息,包括:

      • 上传、下载速度
      • 本地链路状况
      • 资源使用率
      • 侦听和设备发现
      • 当前版本
    • 右下角为远程设备列表,展示了所有已经和本机同步的设备。
      主界面

使用场景

1. 单向备份

假设现在在公司有1台主机,其中有多个工作文件夹比较重要,想要备份在家里的NAS服务器上以备不时之需(当然实际情况下公司的文件不能带出公司,要好好遵守公司保密规章)。

要求:A主机上的文件夹备份到B主机上,同时修改A上的文件会影响到B主机上的文件,但是B主机上修改文件不会影响到A主机。

  1. 查找两台主机的ID

在任一角色的主机上,点击右上角的操作-显示ID,显示一串类似XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX的主机唯一ID和一个二维码。如果使用手机端的Syncthing则可以直接扫描二维码,否则将上述的ID复制保存备用。

  1. 将ID输入到另一台主机

点击右下角添加远程设备,将上述的主机ID填入,即可完成设备的添加。

  1. 添加共享文件夹

在文件当前存储的主机上,点击文件夹下的添加文件夹。输入文件夹标签文件夹路径。在高级选项卡,将文件夹类型改为仅发送在其它设备中对该文件夹内文件的修改并不会被同步到本机,但是在本机上对其的修改,则会被同步到集群中的其它设备)。

  1. 接受文件夹共享

在需要接收文件夹主机的操作界面上会自动提示请求共享的文件夹,许可并设置接收文件夹位置,并在高级选项卡,将文件夹类型改为仅接收文件将从集群同步,但本地所作的任何更改都不会被发送到其他设备)。

2. 双向同步

有那么一段时间,OneDrive、DropBox等网盘在国内使用会有一些速度上的问题,甚至是连接性问题。那么我们就设想使用Syncthing的同步功能来打造离线同步“网盘”。虽然没有云端功能,但是同步可以借助Syncthing轻松做到。

要求:多台电脑上的同一文件夹需要在多台主机上进行同步,同时对任意一台主机上的修改需要同步到另外的所有主机上,亦即,保持各设备某个/多个文件夹内容的同一性。

  1. 添加多台主机ID
    同上一个场景,对每台主机添加其他设备的ID。但是如果设备过多,配置网状结构的时间开销将会很大。因此,我们可以开启Syncthing的作为中介,以通过某一主机来共享具有同一文件夹的主机ID,这样只要具有相同的共享文件夹,主机之间就可以通过某一主机发现并自动添加到主机列表中,从而自动地形成网状同步网络。

进入添加远程设备,输入想要作为中介的主机ID(此主机在初始配置时需要能够被发现),并在共享选项卡中,勾选作为中介将此新设备上拥有的“远程设备”都自动添加到您这边的“远程设备”列表中(如果它们跟您存在相同的文件夹的话)),以开启远程设备共享。
image-20230312121622257.png

  1. 选择需要共享的文件夹
    在拥有需要同步的文件夹的主机上,配置共享文件夹,方法上同。在高级选项卡,将文件夹类型改为发送与接收
  2. 在其余的主机上同意同步文件夹
    方法上同。在高级选项卡,将文件夹类型改为发送与接收

3. 待补充

高级配置

待补充

常见问题

  1. 我在Linux系统上使用,总是提示我failed to setup inotify handler. Please increase inotify limits.
    使用crontab,添加如下命令

    sh -c '(sleep 90 && echo 204800 > /proc/sys/fs/inotify/max_user_watches)&'

在每次开机时执行即可。

  1. 我在群晖系统上安装了Syncthing,但是没有权限读取我的文件夹怎么办?
    群晖的应用账户需要手动设置读写权限。在群晖的共享文件夹中修改内置用户的权限即可。

已有 3 条评论
  1. 老杜

    这个真的是神器

    老杜 | | Windows 10 x64 Edition | Firefox 114.0
  2. kefei

    国内的用户可能用威力同步会更方便, 分发和中继服务器国内都更快. 这个和btsync好像都有过被墙的时候

    kefei | | Windows 10 x64 Edition | Firefox 115.0
  3. Pampo

    这个软件感觉不是很好用,目前市面上都没有找到一个好用的软件😂

    Pampo | | Windows 10 x64 Edition | Google Chrome 111.0.0.0

此处无声胜有声