linux间文件实时同步(syncthing) ---带历史版本“后悔药”
一、概念简介
syncthing
一款开源免费的数据同步工具,基于P2P的跨平台文件同步工具,通过tcp建立设备连接,再通过TLS进行数据安全传输,支持公网与局域网搭建、支持单双向同步与历史版本控制--“后悔药”(备份机未感染情况下,历史版本理论上可以防止勒索病毒的,可惜没实战测试过)、支持Android
、Linux
、Windows
、Mac
等系统,且服务器资源占用小。
本文以两台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左右。(以下历史版本测得结果:针对的文件进行版本备份,空文件夹无版本备份)
① 测试添加文件夹、文本(测得结果:新增数据无历史版本)
② 测试删除空文件夹、文本(测得结果:空文件夹无历史版本)
③ 测试重命名空文件夹、文本(测得结果:空文件夹无历史版本)
④ 测试更改文本内容
⑤ 测试重命名多层级含文本的文件夹(测得结果:含文本的文件夹,历史版本备份整个旧文件夹)
linux间文件实时同步(syncthing) ---带历史版本“后悔药”相关推荐
- 关于解决多台linux服务器间的文件实时同步问题
关于解决多台linux服务器间的文件实时同步问题 参考文章: (1)关于解决多台linux服务器间的文件实时同步问题 (2)https://www.cnblogs.com/fps2tao/p/1003 ...
- inotify用法简介及结合rsync实现主机间的文件实时同步
一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...
- Linux与Windows之间实现文件实时同步的方案
记linux与Windows之间实现文件实时同步的方案 近日,数据分析部提了个需求说要让一台linux的机器上的文件同步到一台Windows机器的某个目录下,由于本姑娘从来没有碰到过这种问题,于是上网 ...
- 【Linux下Inotify + Rsync文件实时同步】
Linux下Inotify + Rsync文件实时同步 一.使用前言* 随着公司业务的发展,单web服务器不能满足用户的访问,需要增加多台web服务器实现均衡高可用性访问.为了统一各web服务器之间的 ...
- rsync+sersync实现数据文件实时同步
rsync+sersync实现数据文件实时同步 使用rsync+sersync,实现nfs与backup服务器间实时数据同步 一.数据同步工具介绍 rsync是一款开源的.快速的.多功能的.可实现全量 ...
- MySQL :rsync+sersync文件实时同步
文章目录 1. rsync是什么 rsync+sersync文件实时同步 一:环境 二:备份服务器操作 三:数据源服务器操作 安装rsync客户端软件 安装sersync工具,实时触发rsync进行同 ...
- 安装黑群晖找不到局域网电脑_星际蜗牛安装黑群晖drive套件实现多台电脑文件实时同步...
原文作者:pt老萌新 写在前面 里面的技术方法不是我原创的,都是网上找的,侵删.折腾的过程记录是原创的(好像没啥原创的了),不仅"原创",还纯手打.本来按照计划这篇应该写用套件中心 ...
- 基于sersync海量文件实时同步
今天我们主要讲解海量文件实时同步,最近涉及到数百万图片数据迁移,为了使图片数据快速迁移,并保证数据数据的一致性,无缝切换.尝试了多种方案. 方案1:rsync+inotify同步,最先想到的是此方案, ...
- oracle和mysql数据实时同步_FileYee文件实时同步备份软件,再不怕数据丢失
日常工作中你是如何保存您的数据文件?简单的保存在电脑或者硬盘吗,其实数据如果单纯的放在一个终端存储是一件危险系数非常高的事情,尤其是企业的重要数据.今天小编给大家带来一款国产良心文件实时同步备份软件- ...
最新文章
- isodate php 时间转换,为ACF自定义字段查询将ISOdate转换为phpdate
- 【Java 基础篇】【第一课】HelloWorld
- POJ 1486 Sorting Slides
- 每天一个linux命令(36):diff 命令
- Android开发究竟该如何学习,含泪整理面经
- 汇编:ret以及retf指令
- PHP迸发,PHP 开发 「十宗罪」
- LeetCode 1417. 重新格式化字符串
- “已使用指定的进程(“Web Management Service”)连接到远程计算机,但未能验证服务器的证书”的解决方案
- 热点 | Excel不“香”了,数据分析首选Python!
- 解决安装软件权限不够的问题
- GIS实验之房价数据可视化分析
- 10年测试经验的性能测试工程师简历模板你见过吗?
- wsimport命令
- c语言if语句用法总结,C语言if语句总结.doc
- a标签去掉下划线以及字体颜色
- Oblog的一些整理
- 携程2017 校招编程题
- git reset HEAD 用法
- Educational Codeforces Round 132 (Rated for Div. 2) 题解(A~D)