最近在为些共有云迁移的问题而头痛,数据的不间断同步成为了需要考虑的首要问题,如何能够更加便利的帮助我们完成这项工作呢?Sync,sync,syncsomething,无意间发现这款貌似已经很流行的软件(只可惜我刚注意到它,还好为时不晚)。我迫不及待的自己安装测试了下,效果很好,大概总结有以下优点:

1、跨平台性,支持linux,windows,mac,安卓等市面主流系统;
2、安全性,所有的文件传输均默认通过TSL控制,加密传输,避免文件泄露;
3、实时性,文件的检测机制可以人性化调节,任意的时间间隔进行文件比对;
4、双向或单向同步任意控制,可以满足所有的传输需求;

安装和简单的配置使用过程:

实验环境:两台linux服务器
linux1:本地内网虚拟机172.20.6.173
linux2:公网服务器192.x.x.x

使用 wget 命令在两台服务器上分别下载最新版本 Syncthing 软件包:

wget https://github.com/syncthing/syncthing/releases/download/v0.14.32/syncthing-linux-amd64-v0.14.32.tar.gz

使用 tar 命令解压软件包:

tar zxvf syncthing-linux-amd64-v0.14.32.tar.gz

将 syncthing 二进制文件复制到 /usr/bin 目录:

sudo cp syncthing-linux-amd64-v0.14.32/syncthing /usr/bin/

设置开机自启动

由于我们要将 syncthing 运行在云服务器上,且通常没有用户登录,因此,应该将Syncthing 注册为系统级服务。将系统级服务配置文件复制到 /etc/systemd/system 目录:
sudo cp syncthing-linux-amd64-v0.14.32/etc/linux-systemd/system/syncthing@.service /etc/systemd/system/

重命名服务配置文件:

mv /etc/systemd/system/syncthing@.service
/etc/systemd/system/syncthing@syncthing.service

添加自启动

systemctl enable syncthing@syncthing.service

启动

systemctl start syncthing@syncthing.service

注意:因为涉及到权限安全的问题,这里最好不要使用root用户直接运行syncthing工具,建议创建一个专门用于该工具的用户,例如:我创建的是syncthing。

配置 Syncthing

配置远程访问

由于 syncthing 默认只允许本地访问管理界面,为了实现通过互联网访问管理界面,需要修改 syncthing 的配置文件:
vim .config/syncthing/config.xml
将配置文件中的 <address>127.0.0.1:8384</address> 修改为<address>0.0.0.0:8384</address>。
现在就可以打开浏览器,使用 IP:8384 形式访问管理界面,例如,本例使用的云服务器公网 IP 为 172.20.6.173如下图
记录一款开源数据同步工具syncthing
PS:这里需要注意的是我们的配置文件这部分是只有在先启动服务以后才会生成

设置身份认证

由于我们在上一步开放了远程访问,初次访问管理界面会显示类似下图的提示,要求设置登录管理界面的用户名和密码,点击 设置 按钮。
记录一款开源数据同步工具syncthing

如下图所示,在设置界面中输入用户名和密码。
提示:同时建议将 启动浏览器 取消勾选,这个功能是当启动 syncthing 时自动激活浏览器打开管理界面。在云服务器上 syncthing 以服务模式运行不需此功能。
记录一款开源数据同步工具syncthing
设置完毕保存后,会要求重启 syncthing,点击 重启 Syncthing 按钮即可。
记录一款开源数据同步工具syncthing
重启完成后,管理界面会自动刷新,并要求身份验证,只有正确输入前面设置的用户名和密码才能进入管理界面。
记录一款开源数据同步工具syncthing

同步的两台设备需要互相添加机器

记录一款开源数据同步工具syncthing
记录一款开源数据同步工具syncthing

syncthing有自己的版本控制及指定同步文件夹或者指定仅发送还是接受和发送
可以在.config/syncthing/config.xml配置文件中修改配置或者是在图形化的web面板中进行修改:
记录一款开源数据同步工具syncthing
记录一款开源数据同步工具syncthing
**