这篇文章介绍的是开源同步软件 Syncthing 的基础使用以及自己服务器的搭建过程

是什么

贴上 Github 地址:Syncthing

是一款可以进行同步的软件,不同于各种“云”(谷歌Sync、坚果云),这款软件没有云端服务

p2p 模式进行数据同步,不存在第三方中心,因此可以认为数据是安全的

如果两个客户端在同一个局域网,则会直接依赖于局域网进行数据传输

如果两个客户端不在同一个局域网,则会通过中继服务器进行传输,中继服务器可以用 default,全球各个地方都架设的有(用户自行架设的),但是用别人服务器的话,还是会担心一些安全问题,尽可能使用自己的服务器

简单描述下我是怎么发现的

开始使用 Logseq 的时候,我发现 Logseq 这个软件我直观的用途应该有两个:

  1. 办公时候在电脑上用
  2. 随拍、随记、读书,需要随时随地在手机上用

这样就涉及到了一个非常明显的问题:需要在 PC 端和手机端进行数据同步

考虑过几个方式:

  1. 通过 Github 做中心,PC 和手机都在使用前做拉取操作
    1. 卡在了手机端,尝试了很多软件,没有能很方便的支持的
  1. 通过云硬盘同步工具
    1. 找了几个遇到各种问题
    2. 配置麻烦
    3. 数据需要在别人的云端

后来发现了 Syncthing,简单了解了之后发现这个就是我想要的

本来以为会比较困难,没想到使用起来太简单了

怎么用

下载地址:自己直接去 Github 上下载最新版就行

想快速使用的话,就在自己家里面试试,两个手机都连上家里局域网,都安装上这个软件

  1. 添加设备
  2. 添加共享的文件夹

共享文件夹中有要共享的设备选项,勾上要共享的设备,对方手机上就会收到提示,确定了选择一个要保存到的目录

这样两个目录就能进行数据同步了

电脑端的使用

下载电脑版的之后,启动可执行文件,会打开一个命令窗口,不要关闭它

同时会在浏览器上打开 GUI 地址:127.0.0.1:8384

图片[1]-Syncthing使用以及服务器搭建-www.88531.cn资享网

操作方式跟手机端是一样的

并且电脑上还会推送附近的客户端

操作举例

新增文件夹

图片[2]-Syncthing使用以及服务器搭建-www.88531.cn资享网

文件夹路径,就是本地要同步的目录

图片[3]-Syncthing使用以及服务器搭建-www.88531.cn资享网

共享:就是要共享的设备,因为可能会加进来很多设备

版本控制:暂没用到

图片[4]-Syncthing使用以及服务器搭建-www.88531.cn资享网

忽略模式:就跟 .gitignore 类似,哪些是忽略同步的

图片[5]-Syncthing使用以及服务器搭建-www.88531.cn资享网

高级里面有文件夹类型,可以选择发送与接收

基于这个有个用法:

比如我照片想做备份,那么就可以在用作备份的机器上设置为:仅接收,那么备份机器上的操作就不会同步到其他设备上

同时还会再去配置一下:“忽略删除操作”,这样的话,就可以做一个照片备份机制了

忽略删除操作配置

图片[6]-Syncthing使用以及服务器搭建-www.88531.cn资享网
图片[7]-Syncthing使用以及服务器搭建-www.88531.cn资享网
图片[8]-Syncthing使用以及服务器搭建-www.88531.cn资享网

这个:Ignore Delete 就是,如果需要忽略删除,那么勾上就成,我这个不是备份机器,所以没有勾

Windows 的开机启动

这种同步工具按说应该是开机默认就启动的,Linux 下设置开机启动的方式就比较多了,这里主要说下 Windows

syncthing.exe 建立快捷方式

图片[9]-Syncthing使用以及服务器搭建-www.88531.cn资享网
 windows + R
 shell:startup

就会打卡开机启动的目录,把快捷方式拖进去就可以了

发现/中继服务器

简单的了解了之后,就基本会用了

特别是在局域网中,同步的速度还是非常快的

可以完成一些很有用的操作,比如:

  1. 重装系统的时候,数据同步
  2. 家里两个手机之间或者手机与电脑之间想传文件时候
  3. 等等

但是大家想一下,如果不在本地局域网呢?

不在局域网的话,两个设备怎么建立关联呢

去看了文档后发现:

Syncthing 定义了”发现服务器”和“中继服务器”

Syncthing Discovery Server 和 Syncthing Relay Server

先放上文档:

发现服务器官方文档

中继服务器官方文档

简单的理解就是,发现服务器用于发现设备,中继服务器用于传输文件

当然了,虽然用到了服务器,但并不是说文件传输就是先上传到服务器上,另一个设备再从服务器上下载下来。不是这个样子的,Syncthing 只是通过中间服务器进行建立 P2P 的连接通道,实际上还是直接进行文件传输的,只不过传输中间需要经过中继服务器

参考该页面:

现有的可用中继服务器

图片[10]-Syncthing使用以及服务器搭建-www.88531.cn资享网

可以看到有很多可以用的,国内也有几台

但这种呢,是网友自己搭建的,每个人的可以自己搭建,没有自己服务器的话,可以用这些,但是建议还是用自己服务器搭建的,因为这样的话是绝对安全的

搭建自己的服务器

搜了下发现有对应的 docker,本来想尝试使用 dcoker,但是整了一波忽然意识到。这个东西需要用到生成的 ID,如果用 Docker 的话,一旦重启,这个 ID 就换了,换 ID 的成本还是有点儿大的,还是决定直接放在主机上合适

由于两个服务器的安装方式一样,我就直接写在一块儿了

下载/解压安装包

wget https://github.com/syncthing/discosrv/releases/download/v1.23.4/stdiscosrv-linux-amd64-v1.23.4.tar.gz
wget https://github.com/syncthing/relaysrv/releases/download/v1.22.1/strelaysrv-linux-amd64-v1.22.1.tar.gz

tar -zxvf stdiscosrv-linux-amd64-v1.23.4.tar.gz
tar -zxvf strelaysrv-linux-amd64-v1.22.1.tar.gz

启动执行

建议放到可执行目录下

cp stdiscosrv-linux-amd64-v1.23.4/stdiscosrv /usr/bin/
cp strelaysrv-linux-amd64-v1.22.1/strelaysrv /usr/bin/

使用 nohup 启动:

touch stdiscosrv.log
touch strelaysrv.log
nohup stdiscosrv > stdiscosrv.log 2>&1 &
nohup strelaysrv > strelaysrv.log -pools="" 2>&1 &

随后看对应的日志文件中,有打印 ID,自行找到即可

注意,一定要去看日志,比如启动中继服务时候,要加上 -pools=””,不然的话会去注册到公共的池子,加上这个之后就不会了,单单是自己私有的

放开相关端口

发现服务器:8443

中继服务器:22067 22070

客户端使用地址

发现服务器:

 https://ip_address:port/?id=your_id

中继服务器地址:

relay://ip_address:port/?id=your_id

客户端配置

以 PC 端举例

图片[11]-Syncthing使用以及服务器搭建-www.88531.cn资享网

上面的“协议监听地址”填的是中继服务器的地址:

tcp4://0.0.0.0:22000, relay://xxx.xxx.xxx.xxx:22067?id=your_id

也可以加上 default,中间用英文逗号分割,代表两个都用,哪个能用用哪个

下面的“全局发现服务器填的是发现服务器的地址:

https://xxx.xxx.xxx.xxx:8443/?id=your_id

同样也可以加上 default,如:

https://xxx.xxx.xxx.xxx:8443/?id=your_id,default

尾声

以上,就是 Syncthing 的使用方式,亲测非常好用

可以用来做非常多的事情

来源地址:Syncthing使用以及服务器搭建

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^

© 版权声明