简介
syncthing 是一个分布式同步工具,可以在多个设备之间同步文件。
syncthing 由 Go 语言编写,跨平台,支持 Windows、Linux、MacOS、FreeBSD、Solaris、OpenBSD、Android 等。
syncthing 配置简单,有完善的网页管理界面。
syncthing 支持没有公网 IP 的设备之间的同步,可以通过 P2P 或者中继服务器实现。
安装
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 文件即可运行,默认会自动打开浏览器。
使用方法
添加设备
- 在红色箭头处点击添加设备。
- 复制远程设备 ID,添加到远程设备。添加之后需要被添加的设备确认。
当前设备 ID 可以在蓝色箭头所指的地方找到。
添加文件夹
- 在绿色箭头处可以添加文件夹,添加之后需要指定同步的设备。
需要在同步的设备上确认接收共享的文件夹。
注意事项
-
同步速度受限于设备的网络带宽,如果需要经过中继服务器,则可能受到中继服务器的速度限制。
-
支持自己搭建发现服务器和中继服务器,详细可以参考Syncthing 文档。
-
如果开放 GUI 地址到公网,注意在设置中配置图形界面连接密码,避免被他人访问。