Syncthing 是一款开源免费跨平台的文件同步工具,是基于P2P技术实现设备间的文件同步,所以它的同步是去中心化的,即你并不需要一个服务器,故不需要担心这个中心的服务器给你带来的种种限制,而且类似于torrent协议,参与同步的设备越多,同步的速度越快。针对隐私问题,Syncthing软件只会将数据存储于个人信任的设备上,不会存储到服务器上。设备之间的通信均通过TLS进行,Syncthing 还使用了完全正向保密技术来进一步保障你的数据安全。对于处于不同局域网之中的设备之间的文件同步 Syncthing 也提供了支持。
Syncthing 支持非常多的平台,包括 Windwos、macOS、Android、Linux、FreeBSD、Solaris、群晖和威联通 NAS 等,但遗憾的是,在 iOS 上只有一个第三方客户端 fsync。
这个教程是局域网内两台Linux主机进行同步,如有疑问可以在「运维圈」中进行发帖提问;
0x01 下载 Syncthing你可以去 Syncthing 的官网进行下载:http://syncthing.net/downloads/ 官网的链接指向了 Github 有条件的用梯子先下载到本地,下面是我直接在服务器上下载速度要命啊!
wget http://github.com/syncthing/syncthing/releases/download/v1.12.1/syncthing-linux-amd64-v1.12.1.tar.gz # 下载到服务器
下载后解压后得到 syncthing-linux-amd64-v1.12.1 这个目录,但是名字太长直接重命名一个短一点的名你可以自定义。运行 Syncthing 后按 Ctrl z 停止运行,目的是让 Syncthing 在 /root/.config/syncthing 目录下生成一个配置文件我们需要修改这个配置文件否则只能本地访问,修改完后就可以从任意一条电脑通过 Web 浏览器来访问了;访问地址为:服务器IP:8384
tar zxf syncthing-linux-amd64-v1.12.1.tar.gz # 解压到当前目录
mv syncthing-linux-amd64-v1.12.1 syncthing # syncthing-linux-amd64-v1.12.1重命名为syncthing
cd syncthing # 进入到 syncthing 目录
./syncthing # 运行 syncthing
Ctrl z # 停止运行 syncthing
sed -i 's/127.0.0.1/0.0.0.0/g' '/root/.config/syncthing/config.xml' # 将配置文件中的 127.0.0.1 修改为 0.0.0.0
./syncthing # 运行 syncthing
修改完配置文件后,在运行 Syncthing 如果报错,通过浏览器无法访问,那么及先查看 syncthing 的进程ID 然后使用 kill 将进程结束在此运行。
ps -aux | grep syncthing # 查看 syncthing 进程
kill -9 87151 # 结束进程 87151 为进程ID
Web 访问 syncthing 的地址为:ip:8384 如果可以访问就会出现以下界面,允许匿名使用报告?选择否;
0x05 设置密码默认访问 syncthing 的 Web 界面是没有密码的,为了安全我们需要设置一个密码;点击设置跳转到设置界面进行密码设置。
在设置界面 → 图形用户界面 → 图形管理界面用户名 设置用户名自定义 → 图形管理界面密码 设置密码;
这里提示的意思是 :Syncthing 不应作为特权用户或系统用户运行。请考虑使用普通用户帐户。
0x06 设置选项我们先来查看下后台的设置选项,操作 → 设置;
常规设置,可以自定义安装了 syncthing 的设备名称、重新生成 API 是否自动升级等;
图形用户界面,可以设置 Gui 的监听地址、用户名密码及主题;
链接设置,协议监听地址、下载上传速率设置是否启用NAT遍历和全球发现,内网建议不要勾选全球发现和 NAT 遍历。一个内网一个外网建议开启。
已忽略的设备,当有设备连接需求时可以选择接受或者忽略,忽略的设备可以在这里查看。
已忽略的文件夹;
0x07 移除默认syncthing 会创建一个默认的文件夹,这个文件没用什么所以就将它删除吧。文件夹 → 选项 → 移除 → 是;
0x08 新建文件夹新建的这个文件夹可用于共享文件或者接受共享文件;点击添加文件夹
文件夹选项,常规设置文件夹标签、文件夹ID这个唯一的如果有多个的话、文件路径;举例我设置的路径是:/home/wwwroot/test.opsit.cn 这个目录,如果这台设备作为源设备那么就是备份这个目录下的文件;如果这台设备作为目标设备那这个路径就是存放源设备文件;
共享设置,由于没有连接远程设备所以这里无法选择,后面再讲;
版本控制,一般不会用,如有需要自行测试;
忽略模式,可以设备忽略某些文件及文件夹;
高级设置,监视更改,完整扫描文件夹类型有三个选项,如果源设备和目标设备需要互相同步就选择发送与接收,如果源设备不同步目标设备选择仅发送当然目标设备需要选择仅接收;
新建文件夹后会自动扫描路径下的文件;
扫描完成后文件夹会显示为共享;
0x09 目标设备在目标设备上搭建完 Syncthing 后同样删除默认的文件,参照 0x01~0x07 选项 → 移除 → 是;
0x10 设备ID在 Syncthing Web界面 → 操作 → 显示ID;
可以看到当前设备的标识ID;
0x11 远程设备一台作为源设备,一台作为目标设备;如果两台设备之间需要共享那么就需要将这两台设备进行连接;在这两台设备任意一台上的 Syncthing Web 界面 → 远程设备 → 添加远程设备;
添加设备,输入另一台设备的 ID 然后保存,设备的ID获取查看 0x10
设备添加后提示断开连接(未使用)
在去查看另外一台设备的 Syncthing Web 界面查看有一个新设备请求连接的消息,点击添加设备即可;当然如果不是你自己发起的请求可以选择忽略;
添加设备,会显示另一个设备的 ID 及设备名,Linux 默认获取的机器名称,点击保存;
设备添加完成后同样是断开连接(未使用)状态;
稍等一会在查看远程设备状态两台设备都变成了已连接(未使用)
0x12 共享设置两台设备都链接后,开始设置共享。在源设备 → 文件夹 → 选项 → 共享;
设置将这个文件夹共享给那个设备;勾选后点击保存;
保存后即开始同步;
在另外一台设备中会弹出给你共享文件是否需要添加新文件夹的请求,点击添加;
添加文件夹选项,设置标签、文件夹ID(唯一)、文件夹路径;设置完成后点击保存;
上一步点击保存后 Syncthing 即开始同步;
一会就同步完了,两台设备同步的挺快;以下是两台设备同步完成的界面;
0x13 验证设置在源设备删除一个 123456 的目录;
目标设备上也同步删除;
源设备新建一个 000 的目录
目标设备也同步了 000 目录
修改高级设置中的文件夹类型来验证,将源设备设置为仅发送,目标设备设置为仅接收;
在目标设备上创建一个 111 的目录;
刷新源设备目录没有将 111 这个目录同步到源设备
,