linux间文件实时同步(syncthing) ---带历史版本“后悔药”

2023-11-14

一、概念简介

 

  • syncthing

一款开源免费的数据同步工具,基于P2P的跨平台文件同步工具,通过tcp建立设备连接,再通过TLS进行数据安全传输,支持公网与局域网搭建、支持单双向同步与历史版本控制--“后悔药”(备份机未感染情况下,历史版本理论上可以防止勒索病毒的,可惜没实战测试过)、支持AndroidLinuxWindowsMac等系统,且服务器资源占用小。

本文以两台centos7.8系统配置syncthing-1.16.1为例,搭建局域网单向的文件实时同步机制(syncthing并非真正意义的实时,不像Inotify通过监控触发,而是通过高频定时任务触发),具体配置实例如下:

服务器名称

IP地址

安装工具

系统版本

同步操作目录

历史版本目录

源服务器

172.16.42.53

syncthing-1.16.1

centos7.8

/root/source/file

备份服务器

172.16.42.65

syncthing-1.16.1

centos7.8

/root/backup/file

/root/history/version

 

二、配置操作

 

1)syncthing下载安装与启动 

  • 开启8384 、22000 端口防火墙 (源服务器与备份服务器)

#检测防火墙状态  
systemctl status firewalld
#开启防火墙8384 、22000 tcp端口若防火墙禁用的请略过命令
firewall-cmd --permanent --add-port=8384/tcp --zone=public
firewall-cmd --permanent --add-port=22000/tcp --zone=public

#开启防火墙21027、44647、37269 udp端口
firewall-cmd --zone=public --add-port=21027/udp --permanent
firewall-cmd --zone=public --add-port=44647/udp --permanent
firewall-cmd --zone=public --add-port=37269/udp --permanent

#重启防火墙
firewall-cmd --reload

端口说明:

              8384 (TCP)是Web访问控制端口

              22000 (TCP) 是节点访问端口

              21027 (UDP) 关于本地发现的端口

              44647 (UDP)

              37269 (UDP)

  • syncthing下载、安装 (源服务器与备份服务器)

Syncthing官网:点击进入

#df -hl 查看磁盘分区空间,确定好备份存放目录(本文为演示,备份文件与历史版本文件都存放在root分区下

df -hl 

#新建syncthing目录
mkdir ./syncthing
cd ./syncthing
#下载syncthing
wget https://github.com/syncthing/syncthing/releases/download/v1.16.1/syncthing-linux-amd64-v1.16.1.tar.gz
#解压缩
tar -zxvf syncthing-linux-amd64-v1.16.1.tar.gz
cd ./syncthing-linux-amd64-v1.16.1

  • 初次启动syncthing (源服务器与备份服务器)

#初次运行syncthing
./syncthing
# 初次运行成功后,ctrl + c 停止运行syncthing
ctrl + c

结果如下,代表启动成功

  • 修改syncthing配置文件  (源服务器与备份服务器)

此时syncthing会生成默认配置文件,默认存放路径 /root/.config/syncthing/(我是root用户登录)

#修改syncthing配置文件放开ip访问限制,syncthing默认仅支持本机访问web管理端
vi /root/.config/syncthing/config.xml
#找到以下位置,将 127.0.0.1:8384 改成 [指定ip]:8384 或 0.0.0.0:8384,建议指定ip更安全

  • 再次启动syncthing并后台运行 (源服务器与备份服务器)

# 后台方式运行syncthing
nohup syncthing &> /dev/null &

  • 设置syncthing服务开机自启 (源服务器与备份服务器)

这里采用的systemd服务方式设置开机自启

#检测机器是否能用systemd服务,命令ps aux
#查看pid=1的进程是否是/usr/lib/systemd/systemd --switched-root --system --deserialize 22
ps aux
#syncthing自带有syncthing@.service文件
#重名syncthing@.service为syncthing@root.service(@后面改为当前系统登录的用户名,笔者是root用户登录,注意你的syncthing安装路径
mv /root/syncthing/syncthing-linux-amd64-v1.16.1/etc/linux-systemd/system/syncthing@.service syncthing@root.service
#复制syncthing@root.service至/etc/systemd/system下
cp /root/syncthing/syncthing-linux-amd64-v1.16.1/etc/linux-systemd/system/syncthing@root.service /etc/systemd/system/
#编辑auto_start.service,修改ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0为ExecStart= /root/syncthing/syncthing-linux-amd64-v1.16.1/syncthing serve --no-browser --no-restart --logflags=0
vi /etc/systemd/system/syncthing@root.service

# 重启systemd服务,并将syncthing@root.service设置开机自启动
systemctl daemon-reload
systemctl enable /etc/systemd/system/syncthing@root.service

2) syncthing后台管理端配置文件实时同步

 

  • 进入web管理端并配置用户名/密码  (源服务器与备份服务器)

① 在浏览器输入 http://服务器IP:8384 进行访问,初入web控制端界面如下

② web管理端默认是不做身份验证的,因此会弹出安全提示框,接下来为web管理端备注设备名、配置用户名/密码、配置局域网本地访问模式

③ 备注设备名

④ 配置用户名/密码

⑤ 配置局域网本地发现模式

⑥ 完成源服务器与备份服务器的配置后,刷新地址栏,输入刚刚配置的用户名/密码,界面瞬间清新

  • 源服务器添加备份服务器的远程设备

① 查看备份服务器的设备标识ID(记住它)

② 源服务器web端“添加远程设备”,并选中备份服务器的设备标识ID(若没有自动刷新出来,直接拷贝进去)

③ 稍等片刻后,备份服务器上会收到添加设备的请求确认弹框,点击添加并保存

 

  • 配置实时同步共享文件夹

① 源服务器中添加共享文件夹,并配置共享文件夹的路径

② 再选择共享的远程设备

③ 最后进行高级配置并保存:配置单向同步(仅发送)、配置实时监控扫描(默认启用)、配置完整扫描间隔(单位秒,默认1h)

④ 稍等片刻后,备份服务器会收到添加共享文件夹的请求确认框,点击添加

⑤ 配置共享同步文件夹的存放路径

⑥ 配置版本控制:选择简易版本控制,配置历史版本存放路径,配置同一文件历史版本的保留数量,再配置历史版本的清除间隔,本文设置的1年

 

⑦ 最后进行高级配置并保存:取消实时监控(备份服务器不需要监控更改)、写大完整扫描间隔(备份机不需要完整扫描)、选择仅接收模式

综合上述完成了源服务器与备份服务器的相关配置:局域网、添加远程设备、添加同步共享文件夹、配置单向同步、配置历史版本

              

3)测试同步效果

本文教程演示环境,测得的同步时延大概在10s左右。(以下历史版本测得结果:针对的文件进行版本备份,空文件夹无版本备份)

① 测试添加文件夹、文本(测得结果:新增数据无历史版本)

② 测试删除空文件夹、文本(测得结果:空文件夹无历史版本)

③ 测试重命名空文件夹、文本(测得结果:空文件夹无历史版本)

 

④ 测试更改文本内容

⑤ 测试重命名多层级含文本的文件夹(测得结果:含文本的文件夹,历史版本备份整个旧文件夹)

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux间文件实时同步(syncthing) ---带历史版本“后悔药” 的相关文章

随机推荐

  • pip install -r requirements.txt出现错误时........

    只需要把pip install r requirements txt后加入替换网址即可 安装需要的库的时候建议使用清华源 这样更快 使用下面的指令就可以使用清华源下载了 pip install r requirements txt i ht
  • Django 快速搭建博客 第三节(数据库表设计)

    上一节我们已经能在pycharm下新建了blog app了 这个时候 我们需要设计一下博客的数据库设计 关于数据库表的设计 作为新手的我们并不需要要求懂太多稍微的懂一些也就可以了 毕竟数据库也是需要有一定的功底的 这里我们依据博客学习 将博
  • 多线程操作同一个变量

    在java线程并发处理中 有一个关键字volatile的使用目前存在很大的混淆 以为使用这个关键字 在进行多线程并发处理的时候就可以万事大吉 Java语言是支持多线程的 为了解决线程并发的问题 在语言内部引入了 同步块 和 volatile
  • Python算法工程师:心中无码便是高清,马赛克“脑补”算法 PULSE

    1 万恶马赛克 万恶的马赛克 是阻碍人类进步的绊脚石 马赛克 脑补 算法 PULSE 助你图片模糊变高清 这是杜克大学近期的一项研究 将模糊人脸秒变高清 PULSE 算法目前只支持人脸的马赛克 去除 因为训练数据都是人脸 也就是说 脑补 其
  • 华为X系列服务器,华为X系列高密服务器产品介绍.pptx

    华为X系列高密服务器产品介绍 目标 华为高密服务器总览X6000服务器介绍X8000服务器介绍 计算面临的挑战 云计算 IT面临的挑战 华为服务器家族 华为高密服务器总览X6000服务器介绍X6000服务器简介X6000服务器硬件结构X60
  • MySQL 视图(详解)

    文章目录 一 视图概念 使用视图的原因 二 创建视图 1 基本语法 2 创建基于单表的视图 实例 1 实例 2 3 创建基于多表的视图 实例 3 4 查询视图 实例 4 三 查看视图 1 查询表 包括view 2 查询视图 四 修改视图 1
  • 【Node】使用Node.js连接数据库时报错客户端不支持服务器请求的身份验证协议

    使用Node js连接数据库时报错 Error ER NOT SUPPORTED AUTH MODE Client does not support authentication protocol requested by server c
  • 嗯… 无法访问此页面 www.bing.com 花了太长时间进行响应解决办法

    从昨天开始 Microsoft Edge浏览器在搜索栏输入中文后就无法响应 但是网络连接是好的 防火墙也没有设置过 问题见下图 点击运行Windows网络诊断 如下图 检测完成后 只是说你的计算机配置似乎是正确的 但该设备或资源 www b
  • 微信小程序animation动画,微信小程序animation动画无限循环播放

    需求是酱紫的 页面顶部的喇叭通知 内容不固定 宽度不固定 就是做走马灯 轮播 效果 从左到右的走马灯 轮播 每播放一遍暂停 1500ms 2000ms 刚开始想的是 css 的 position relative animation 如果宽
  • 自定义一个VideoCapturer(WebRTC)用于获取大疆无人机实时视频

    WebRTC做大疆无人机直播 大疆带屏遥控器有直播功能 用的是rtmp 但是延时有点大 所以在遥控器里安装自己的软件 用webrtc来做一个无人机视频实时传输 需要自定义一个VideoCapturer来获取无人机视频封装成便于webrtc使
  • Spring AOP 剖析(5)

    在动态代理 和 CGLIB 的支持下 Spring AOP 框架的实现经过了两代 从 Spring AOP 框架第一次发布 到 Spring 2 0 发布之前的 AOP 实现 是 Spring 第一代 AOP 实现 Spring 2 0 发
  • vue项目中修改页面logo和标题

    第一步 把图片转成icon格式 比特虫转换工具 建议尺寸为16 16 第二步 将图标重命名为 favicon ico 并放在项目根目录下 第三步 然后在index html中引入 title中修改页面标题 第四部 分别修改build文件夹下
  • 5. spark 参数问题

    如何传递spark 参数 在代码中设置参数 命令行 Spark Properties 动态加载参数 官网地址 spark 参数 在代码中设置参数 spark default conf lt 命令行 lt 代码内部设置参数 对于一常用的参数可
  • python 图像处理中PIL中image.convert()函数使用

    from PIL import Image img Image open E image myimg jpg result img convert P palette Image ADAPTIVE colors 10 3 模式 P 模式 P
  • 计算机图形学 3D 渲染 笔记(二)

    一 阴影 判断一个点是否被遮住 可以从该点像光源方向发射射线 P tL 若射线被与物体发生相交 则说明它在阴影中 而这个物体由于要在 P 和 光源之间 在方向光场景下 t 的取值范围是 0 lt t lt 因为光源无限远 而在点光下 t 的
  • 经济学人:重塑世界的区块链技术

    比特币背后的技术可让彼此互不认识的人建立可依赖的账簿 这远远超出了加密数字货币本身的意义 Mariana Catalina Izaguirre女士在她简陋的房子已经居住了三十年 但洪都拉斯的警察在2009年突然要将她赶走 不同于她在特古西加
  • Frida hook零基础教程

    1 环境搭建 1 准备frida服务端环境 Releases frida frida GitHub 根据手机具体版本下载对应文件并解压 Android手机一般是arm64架构 将解压后的frida server推送到手机端的 data lo
  • rocketmq客户端配置

    1 客户端配置 相对于RocketMQ的Broker集群 生产者和消费者都是客户端 2 客户端寻址方式 RocketMQ可以令客户端找到Name Server 然后通过Name Server再找到Broker 如下所示有多种配置方式 优先级
  • 智慧农业物联网系统 智慧农业解决方案

    智慧农业是智慧经济发展在农牧业上的运用反映 伴随着5G无线通信技术 互联网大数据信息资源管理技术性等现代化技术性普及化 物联网的实际运用标准逐渐完善 传统农业便熟练掌握物联网 摇身一变变成智能农业 智慧农业应用农业地区的每个传感器连接点检测
  • linux间文件实时同步(syncthing) ---带历史版本“后悔药”

    一 概念简介 syncthing 一款开源免费的数据同步工具 基于P2P的跨平台文件同步工具 通过tcp建立设备连接 再通过TLS进行数据安全传输 支持公网与局域网搭建 支持单双向同步与历史版本控制 后悔药 备份机未感染情况下 历史版本理论