最近领导要求医院的文件要进行同步更新,避免医院服务器炸了,数据库备份还有服务文件全部都没了。
调研了下各种方案 rsync 只能linux,windows虽然可以通过一些方式部署,但是不是原生的,挺麻烦,我们产品上线几十家医院,同步工具的首要目标是,安装部署简单。
在众多产品中选择了syncthing,windows,linux,docker,mac,安卓,基本上全平台支持,但是最重要的是 windows+linux。于是各个平台部署了下,记录下文档,以便自己回顾。
下载地址地址:https://github.com/syncthing/syncthing/releases
安卓版地址:https://github.com/syncthing/syncthing-android/releases
基本概念
syncthingt有几个重要的默认端口8384
是web管理页面22000
是同步端口
安装
1.windows版安装
windows安装很简单,解压后运行 syncthing.exe。运行的时候会出来一个cmd窗口,里面会描述syncthing的端口信息。
只有运行成功后,syncthing 才会在用户的文件夹生成配置。
windows版的配置文件在 C:\Users\用户名\AppData\Local\Syncthing\
下,config.xml
是配置文件。
<!--建议将127.0.0.1修改为0.0.0.0这样其他机器也能访问->
<address>0.0.0.0:8384</address>
运行成功后,通过浏览器访问 127.0.0.1:8384 即可访问web管理页面,后面会详细介绍其具体用法,这章只介绍安装。
2.linux版安装
下载tar包,例如 syncthing-linux-amd64-v1.29.2.tar.gz ,这里 1.29.2 是版本号。
上传到linux服务器,使用 tar -zxvf syncthing-linux-amd64-v1.29.2.tar.gz
解压后,其实就可以直接运行了,但是我的习惯是放到指定文件夹下 mv syncthing-linux-amd64-v1.29.2 /usr/local/syncthing
,然后进入目录 cd /usr/local/syncthing
,直接运行
./syncthing
前台模式运行(首次运行建议使用)
nohup syncthing &> /dev/null &
简单后台模式运行
只有运行成功后,syncthing才会在默认位置创建配置文件,linux版的,位置根据当前用户的位置而改变,启动日志里面也能看到
root用户在 /root/.local/state/syncthing
其他用户的在 /home/user/.config/syncthing
<!--建议将127.0.0.1修改为0.0.0.0这样其他机器也能访问->
<address>0.0.0.0:8384</address>
使用浏览器 ip:8384 即可访问syncthing的web管理页面,后面会详细介绍其具体用法,这章只介绍安装。
3.安卓版安装
安卓版地址:https://github.com/syncthing/syncthing-android/releases
下载直接安装即可。
4.docker版安装
镜像 syncthing/syncthing:latest
官方docker安装方式 :https://github.com/syncthing/syncthing/blob/main/README-Docker.md
docker Compose
---
version: "3"
services:
syncthing:
image: syncthing/syncthing
container_name: syncthing
hostname: my-syncthing
environment:
- PUID=1000
- PGID=1000
- STGUIADDRESS=0.0.0.0:8384
volumes:
- /wherever/st-sync:/var/syncthing
ports:
- 8384:8384 # Web UI
- 22000:22000/tcp # TCP file transfers
- 22000:22000/udp # QUIC file transfers
- 21027:21027/udp # Receive local discovery broadcasts
restart: unless-stopped
healthcheck:
test: curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
interval: 1m
timeout: 10s
retries: 3
其中 STGUIADDRESS=0.0.0.0:8384 代表任意ip访问。
使用浏览器 ip:8384 即可访问syncthing的web管理页面,后面会详细介绍其具体用法,这章只介绍安装。
使用
快速使用
1. 基础配置
在最开始也介绍了,8384端口是web管理页面,22000端口是默认同步端口。在开启任意端口访问后,使用web管理页面,为了安全建议配置账号和密码了。如果未设置,也可以点击右上角的 操作-->设置 --> GUI 设置密码。
2.添加文件夹
添加文件夹是为了更加方便同步,例如 A服务器 同步到 B服务器 的指定文件夹,那么需要先在B服务器设置文件夹。A服务器也设置文件夹。那么syncthing就会在两个服务器的两个文件夹中同步文件,要不然同步到默认文件夹。
A服务器添加文件夹
B服务器添加文件夹
3.添加远程设备
可以在B服务器或者A服务器操作,例如在 B服务器操作,
先复制A服务器的设备id,在A服务器的 syncthing的web管理页面,点击右上角的操作-->显示id 复制即可
然后在 B服务器的 syncthing的web管理页面,右下角点击添加远程设备。
这样就添加成功了
然后在B服务器或者A服务器,添加一个文件测试下同步效果
可以看到文件同步成功。
最主要的是 A服务器和B服务器 ,要创建一样文件夹id的文件夹,如果不一样,后面要按照A服务器和B服务器的syncthing的提示,分别在两个服务器上确定同步后系统自动创建了。
以上就是sync的快速入门,以上场景也适合 个人电脑和服务器,个人电脑与nas(nas需要能直接访问到)之间的同步,只需要将B服务器的概念改为个人电脑即可。但是要想使用好,还有一些更加详细的配置,例如过滤不需要同步的文件(例如 word的临时文件),还有单项同步等。
进阶使用
同步方向(发送方和接收方)
一般的同步是双向的,就是 B服务器,删除一个文件后,经过 syncthing同步后,A服务器也会删除同样的文件
发送和接收: 双向同步,A删除,B也同步删除。
仅接收:不同步删除的文件,A仅接收,B发送和接收,B删除文件后,A不会删除。
仅发送:例如A仅发送,B发送和接收,B删除文件后,A不会删除。
其他组合,可以尝试下,调试出适合自己的同步模式。
2. 文件过滤(忽略模式) 例如我的代码目录中,有源码和编译包,编译包(源码编译出来的)不需要同步,只同步源码即可。 未设置过滤前 230M, 过滤条件 可以看到设置忽略模式后,文件大小大幅减少,只有代码了。 3. 版本控制
评论区