多端同步工具syncthing
一、前因
新一代笔记管理工具obsidian免费版不支持多端同步,但是它是针对本地文件管理的,所以换个角度,只需要将库文件多端同步即可。
支持国产的可以使用威力同步。我这里使用比较火的syncthing。
实测obsidian的配置也能自动同步,不需要每台电脑再次安装插件了。
原则上任意两个设备就可以实现同步了,比如,你的电脑与公司电脑。
但是自己家里电脑不可能一直开机,所以我加入了树莓派,毕竟一直开着的。
简单来说就是,树莓派当中央库,自己电脑同步中央库,公司电脑同步中央库,当然你要上个保险,在你的云服务器中同步一份也可以,4个端一起丢失这个概率应该近乎为零。
开搞。
二、树莓派安装
syncthing,是用GO语言(个人最爱)编写的,所以运行简单。
我这里在树莓派中使用docker-compose安装,便于管理。
老套路了,新建目录及docker-compose.yml文件,贴入以下内容:
version: "3"
services:
syncthing:
image: syncthing/syncthing
container_name: syncthing
environment:
- PUID=1000
- PGID=1000
volumes:
- /data/sync:/var/syncthing # 同步文件夹
ports:
- 8384:8384 # 端口
- 22000:22000/tcp
- 22000:22000/udp
restart: unless-stopped
保存后输入 docker-compose up -d
运行。
输入树莓派IP+端口(8384),进入web页面,改成中文之后,应该都能看懂。
首先,设置网页密码。
设置同步文件夹,删除默认生成的重建,或者直接编辑默认的。
树莓派中我选择开启版本控制,这样可以回退到其他版本,注意,只有其他端修改的才会有版本记录,大家按需选择,每个框下面的说明比我说的更清楚,这里我选择简易版本。
保存之后,树莓派端就搭建成功了,obsidian这个文件夹我们就可以同步了。接下来我们在自己电脑上安装syncthing。
三、自己电脑安装(window)
官方的客户端打开之后是个小黑框,而且需要弹出浏览器配置,比较low,这里使用SyncTrayzor,下载地址:https://github.com/canton7/SyncTrayzor/releases
下载之后,一路下一步,然后打开,跟树莓派一样,设置密码,删除默认文件夹,我们这里只需要同步树莓派中的文件夹,就不需要新建文件夹了。
使用方法,点击添加远程设备,输入树莓派中的ID,没有人在中文界面还找不到ID在哪吧?
点击保存,骚等片刻,树莓派那边网页会显示是否同意啥的,点击确认即可。
流程是需要双向绑定,所以,我们在树莓派网页那边也去绑定自己电脑的ID,树莓派那边记得把共享文件夹打上勾。
保存之后,电脑端应该会有两次确认,一次是确认设备添加,一次是确认同步文件,都点确定就可以了。同步文件记得改掉保存路径,C盘空间大,默认也可。
最后,在电脑端或者树莓派端,往同步文件夹添加文件,就会互相同步了。
四、公司电脑安装
也是window,重复上面操作即可。
五、优化
先解释两个概念。
发现服务器:
自己电脑与树莓派都在家中,也就是同一个网络下面,它们两个能互相找到设备ID,那是毋庸置疑的,但是公司网络跟树莓派不在一个网络,为什么也能互相找到设备ID呢?
那是因为syncthing给我们提供了全球发现服务器,建好的syncthing设备ID会自动上传到全球服务器中,便于我们连接。
全球服务器在国外,所以有时候连接不是那么稳点,也不安全,所以需要自己建立一个发现服务器。
中继服务器:
两个设备之间有了发现服务器虽然找是可以找到了,但是数据传输同步,是通过中继服务器来传输的,还是一样的问题,syncthing使用的是全球中继服务器,它也在国外,所以为了同步速度快点,我们也需要自建中继服务器。
我们可以在设置页面看到syncthing默认使用的都是default服务器,所以我们要做的优化就是换成我们自建的。
搭建起来也是简单的很,下载文件,然后运行就可以了。
发现服务器:https://github.com/syncthing/discosrv/releases
中继服务器: https://github.com/syncthing/relaysrv/releases
选择对应的版本下载,我用树莓派充当中继与发现服务器,所以下载的是arm64文件。
拷贝到树莓派目录,解压
discosrv运行,官方文档:https://docs.syncthing.net/users/stdiscosrv.html?utm_source=ld246.com
./stdiscosrv
会出来个ID,记下来,默认会去申请https证书。记得开放端口8443。
https://你的ip:8443/?id=你的id
relaysrv运行,官方文档:https://docs.syncthing.net/users/strelaysrv.html?utm_source=ld246.com
./strelaysrv -pools=""
pool参数不想让别人用流量请留空,其他参数,没必要。运行之后会出来URI,把它记录下来。记得开放22067,22070端口
relay://你的ip:22067/?id=你的id&pingInterval=1m0s&networkTimeout=2m0s&sessionLimitBps=0&globalLimitBps=0&statusAddr=:22070&providedBy=
上面运行命令按ctrl+c就会停掉,所以我们需要后台启动还有开机自启,方式有很多,可以nohup,supervisor,systemd等,这里选择systemd。
新建并编辑发现服务器文件
vi /usr/lib/systemd/system/stdiscosrv.service
放入下面内容,记得改成你的文件路径
[Unit]
Description=stdiscosrv
After=network.target
Wants=network.target
[Service]
WorkingDirectory=/opt/syncthing
ExecStart=/opt/syncthing/stdiscosrv
Restart=on-failure
RestartSec=10s
KillMode=mixed
[Install]
WantedBy=multi-user.target
新建并编辑中继服务器文件
vi /usr/lib/systemd/system/strelaysrv.service
放入下面内容,记得改路径。
[Unit]
Description=strelaysrv
After=network.target
Wants=network.target
[Service]
WorkingDirectory=/opt/syncthing
ExecStart=/opt/syncthing/strelaysrv
Restart=on-failure
RestartSec=10s
KillMode=mixed
[Install]
WantedBy=multi-user.target
运行下图命令,欸,我就放图,不让复制。
最后将你每个syncthing端都填入上面记录好的地址,如果需要与默认的服务器共存,再defaul后面加逗号添加即可。
保存之后,侦听程序,设备发现有数字就算成功。
开始显示同步的乐趣吧,syncthing也有手机端,可以同步照片啥的,我以前搭建了FileRun,就不去使用它了。需要使用的下载好就行,配置也不难。
六、总结
总啥结,洗洗睡。