前言

之前为了同步自己收集的插画和音乐,鼓捣了半天rsync搞出了一套同步方案,虽能满足要求,但使用还是很复杂,尤其是需要一台中心服务器。后来发现了Syncthing这款P2P同步工具,无需中心服务器即可完成多设备间的文件同步。

本文将介绍Windows、Linux和Android系统客户端的安装部署,以及基本的使用方法。

安装

Windows

自带托盘图标的SyncTrayzor虽然更好用,但是最后一次更新是在2021年,有一点点老……

不过不影响使用就是啦。这两款软件的安装和配置教程下面都会写。

Windows系统可以使用Syncthing Windows Setup(GitHub)或自带托盘图标的SyncTrayzor(GitHub蓝奏 hvc7)。

通过 Syncthing Windows Setup 安装

可以通过安装程序来配置Web界面端口和开机自启等选项:

SyncTrayzor 开机自启

安装完成后,打开软件主界面,点击文件-设置:

勾选“随开机自动启动”即可。

Android

Android系统可以在F-Droid下载官方提供的安装包。

macOS

在此下载安装macOS版不要问我为啥只有这一个链接,因为不用Mac

Linux

如果使用的是带图形界面的Linux,可以在官方文档处找到一些Linux用的托盘图标/图形界面(类似Windows下的SyncTrayzor)。本文侧重于命令行环境下的配置。

大部分Linux软件源中都含有Syncthing的服务端,直接使用apt、dnf等包管理器安装即可。

添加官方软件源(仅限Debian/Ubuntu)

Debian、Ubuntu系统可通过添加官方软件源获取最新版本。

首先,导入公钥:

sudo mkdir -p /etc/apt/keyrings
sudo curl -Lo /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg

然后,根据个人需要,导入stable(稳定版)或candidate(测试版)的软件源:

# 稳定版(stable)
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
# 测试版(candidate)
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing candidate" | sudo tee /etc/apt/sources.list.d/syncthing.list

最后,安装Syncthing:

sudo apt update
sudo apt install syncthing

配置其它主机访问(可选)

Syncthing的Web界面默认配置成仅本机才可以访问,如果需要支持其他主机访问,需要修改一下配置文件。

Web界面

启动Syncthing后,点击右上角操作-设置

点击图形用户界面,将GUI 监听地址修改为0.0.0.0:8384即可。

如果出现一行黄字显示GUI 地址已被启动选项覆盖,则需要检查所使用的图形界面有没有提供修改地址的选项。以Windows上的SyncTrayzor为例:

命令行

如果是初次使用Syncthing,需要先运行一下Syncthing,生成一个默认配置文件。

$ syncthing
[start] 2023/12/29 07:41:15 INFO: syncthing v1.27.1 "Gold Grasshopper" (go1.21.5 linux-arm64) debian@github.syncthing.net 2023-12-11 06:44:04 UTC [noupgrade]
[start] 2023/12/29 07:41:15 INFO: Generating ECDSA key and certificate for syncthing...
[start] 2023/12/29 07:41:15 INFO: Default folder created and/or linked to new config
[start] 2023/12/29 07:41:15 INFO: Default config saved. Edit /home/pi/.local/state/syncthing/config.xml to taste (with Syncthing stopped) or use the GUI

然后打开配置文件(一般在~/.local/state/syncthing/config.xml),找到此处:

<gui enabled="true" tls="false" debugging="false" sendBasicAuthPrompt="false">
<address>127.0.0.1:8384</address>
<apikey>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</apikey>
<theme>default</theme>
</gui>

127.0.0.1:8384改为0.0.0.0:8384即可。

设置完成后,再次启动、进入Web界面会显示如下的信息,按照提示设置密码即可。

配置开机自启

如需随桌面环境的开机自启,可参考官方文档

Syncthing自带了systemd服务文件,直接启用即可:

sudo systemctl enable --now syncthing@用户名

开始备份

添加文件夹

Windows版和Linux版安装Syncthing后,会自动在用户主目录下创建一个Sync文件夹作为默认文件夹(Default Folder),Android版则是会将系统相册(/storage/emulated/0/DCIM)作为默认共享添加。

首先,点击添加文件夹

打开添加文件夹界面:

添加设备

在将文件夹同步到其他设备之前,需要先将两台设备互相添加。此处以移动端(Android)添加电脑(Windows/Linux)为例。

首先,打开移动端的添加设备界面:

然后,打开Web界面右上角的操作-显示 ID

此时会显示出一个二维码,手机端可以点击二维码图标,直接扫码:


手机端添加完成后,另一端会出现添加设备的提示:

如果使用的是SyncTrayzor,还会很方便的弹出这样的提示

点击添加设备后,可以给设备起一个名字,这样就完成双方设备的添加了。

开始同步

两个设备都添加好彼此以后,就可以进行同步了。

Web端到移动端

点开需要共享的文件夹,点击右下角的选项

随后点击共享,勾选设备(也可以在右边设置一个密码):

然后手机会收到一个通知:

点击同意后,就可以设置共享目录了。此处设置与添加文件夹大同小异。

移动端到Web端

点开需要分享的文件夹后,打开需要共享的设备开关:

此时Web页面会收到通知:

点击添加后,就可以设置共享目录了。此处设置与添加文件夹大同小异。

设置完毕后,就可以快乐的开始同步了~

后记

其实这款同步软件的功能很强大,支持忽略模式(类似gitignore?)、版本控制等功能,大家可以探索一下,如果有比较实用的技巧,也会抽时间更新一下。