多平台文件同步/传输神器——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,但是版本较低,不建议使用。
安装发布密钥
sudo curl -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
添加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
[可选]添加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
更新apt源
sudo apt-get update -y sudo apt-get install syncthing -y
启动Syncthing
可以直接使用命令启动。注意,Syncthing不需要以root
权限运行,也不建议使用root
权限运行。syncthing
如此启动后,Syncthing会在该控制台输出日志信息。
也可以按照以下说明加入系统服务以开机自启动。sudo systemctl enable syncthing-resume.service
Android
该平台直接从Google Play上搜索下载即可,国内用户可以从F-Droid平台下载apk安装包。
软件界面
- 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监听来自任何地址的访问了。
- 匿名使用报告
首次进入,会弹出匿名使用的许可,根据自己的意愿选择即可。
主界面
主界面十分简洁。- 左边为所有参与同步的文件夹。刚刚安装完成的Syncthing中,其已经默认添加了一个文件夹。
右边为当前设备的信息,包括:
- 上传、下载速度
- 本地链路状况
- 资源使用率
- 侦听和设备发现
- 当前版本
- 右下角为远程设备列表,展示了所有已经和本机同步的设备。
使用场景
1. 单向备份
假设现在在公司有1台主机,其中有多个工作文件夹比较重要,想要备份在家里的NAS服务器上以备不时之需(当然实际情况下公司的文件不能带出公司,要好好遵守公司保密规章)。
要求:A主机上的文件夹备份到B主机上,同时修改A上的文件会影响到B主机上的文件,但是B主机上修改文件不会影响到A主机。
- 查找两台主机的ID
在任一角色的主机上,点击右上角的操作-显示ID,显示一串类似XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX
的主机唯一ID和一个二维码。如果使用手机端的Syncthing则可以直接扫描二维码,否则将上述的ID复制保存备用。
- 将ID输入到另一台主机
点击右下角添加远程设备,将上述的主机ID填入,即可完成设备的添加。
- 添加共享文件夹
在文件当前存储的主机上,点击文件夹下的添加文件夹。输入文件夹标签和文件夹路径。在高级选项卡,将文件夹类型改为仅发送(在其它设备中对该文件夹内文件的修改并不会被同步到本机,但是在本机上对其的修改,则会被同步到集群中的其它设备)。
- 接受文件夹共享
在需要接收文件夹主机的操作界面上会自动提示请求共享的文件夹,许可并设置接收文件夹位置,并在高级选项卡,将文件夹类型改为仅接收(文件将从集群同步,但本地所作的任何更改都不会被发送到其他设备)。
2. 双向同步
有那么一段时间,OneDrive、DropBox等网盘在国内使用会有一些速度上的问题,甚至是连接性问题。那么我们就设想使用Syncthing的同步功能来打造离线同步“网盘”。虽然没有云端功能,但是同步可以借助Syncthing轻松做到。
要求:多台电脑上的同一文件夹需要在多台主机上进行同步,同时对任意一台主机上的修改需要同步到另外的所有主机上,亦即,保持各设备某个/多个文件夹内容的同一性。
- 添加多台主机ID
同上一个场景,对每台主机添加其他设备的ID。但是如果设备过多,配置网状结构的时间开销将会很大。因此,我们可以开启Syncthing的作为中介,以通过某一主机来共享具有同一文件夹的主机ID,这样只要具有相同的共享文件夹,主机之间就可以通过某一主机发现并自动添加到主机列表中,从而自动地形成网状同步网络。
进入添加远程设备,输入想要作为中介的主机ID(此主机在初始配置时需要能够被发现),并在共享选项卡中,勾选作为中介(将此新设备上拥有的“远程设备”都自动添加到您这边的“远程设备”列表中(如果它们跟您存在相同的文件夹的话)),以开启远程设备共享。
- 选择需要共享的文件夹
在拥有需要同步的文件夹的主机上,配置共享文件夹,方法上同。在高级选项卡,将文件夹类型改为发送与接收。 - 在其余的主机上同意同步文件夹
方法上同。在高级选项卡,将文件夹类型改为发送与接收。
3. 待补充
高级配置
待补充
常见问题
我在Linux系统上使用,总是提示我
failed to setup inotify handler. Please increase inotify limits.
使用crontab,添加如下命令sh -c '(sleep 90 && echo 204800 > /proc/sys/fs/inotify/max_user_watches)&'
在每次开机时执行即可。
- 我在群晖系统上安装了Syncthing,但是没有权限读取我的文件夹怎么办?
群晖的应用账户需要手动设置读写权限。在群晖的共享文件夹中修改内置用户的权限即可。
最后更新于 2024-09-16 20:33:15 并被添加「 」标签,已有 26394 人阅读过。
这个真的是神器
国内的用户可能用威力同步会更方便, 分发和中继服务器国内都更快. 这个和btsync好像都有过被墙的时候
这个软件感觉不是很好用,目前市面上都没有找到一个好用的软件😂