简介

syncthing 是一个分布式同步工具,可以在多个设备之间同步文件。

syncthing 由 Go 语言编写,跨平台,支持 Windows、Linux、MacOS、FreeBSD、Solaris、OpenBSD、Android 等。

syncthing 配置简单,有完善的网页管理界面。

syncthing 支持没有公网 IP 的设备之间的同步,可以通过 P2P 或者中继服务器实现。

Syncthing

安装

Linux 安装

# 添加密钥
sudo curl -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
# 添加源
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
# 更新并安装
sudo apt-get update
sudo apt-get install syncthing

Windows 安装

直接在 GitHub 上下载对应平台的压缩包文件,解压后,点击 exe 文件即可使用。默认启动后会自动打开 web 界面。

下载地址

也可以选择第三方的桌面 GUI 应用,如syncthingtray

运行

Linux

  • 创建 syncthing 账户用于运行 syncthing,出于安全考虑不推荐使用 root 账户
# 创建syncthing账户
sudo adduser syncthing
# 切换到syncthing账户
su syncthing
  • 首次运行时需要生成证书文件。
syncthing generate
  • 运行,可以通过-home指定工作目录(包括配置目录和数据目录),-no-browser不默认打开浏览器。

如果需要远程访问,需要在--gui-address指定地址,默认地址为http://localhost:8384/

注意 syncthing 用户需要拥有指定工作目录的权限

syncthing serve --home=<dir> --no-browser
  • 注意放行防火墙端口:

端口 22000/TCP: 基于 TCP 的同步协议流量 端口 22000/UDP: 基于 QUIC 的同步协议流量 端口 21027/UDP: 发现服务广播流量

systemd 守护进程

切换回 sudo 账户,在/etc/systemd/system/中创建syncthing.service文件。

[Unit]
Description=Syncthing Service
After=network.target

[Service]
User=syncthing
WorkingDirectory=/path/to/your/dir
Environment="PATH=/usr/local/bin"
ExecStart=syncthing serve --home=<dir> --no-browser --gui-address=<address>

[Install]
WantedBy=multi-user.target

启动守护进程

sudo systemctl start syncthing.service

开机自启动

sudo systemctl enable syncthing.service

Windows

直接双击 exe 文件即可运行,默认会自动打开浏览器。

使用方法

添加设备

  • 在红色箭头处点击添加设备。

Syncthing Add Device

  • 复制远程设备 ID,添加到远程设备。添加之后需要被添加的设备确认。

当前设备 ID 可以在蓝色箭头所指的地方找到。

添加文件夹

  • 在绿色箭头处可以添加文件夹,添加之后需要指定同步的设备。

需要在同步的设备上确认接收共享的文件夹。

注意事项

  • 同步速度受限于设备的网络带宽,如果需要经过中继服务器,则可能受到中继服务器的速度限制。

  • 支持自己搭建发现服务器和中继服务器,详细可以参考Syncthing 文档

  • 如果开放 GUI 地址到公网,注意在设置中配置图形界面连接密码,避免被他人访问。

参考