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

一、概念简介

 

  • 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左右。(以下历史版本测得结果:针对的文件进行版本备份,空文件夹无版本备份)

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

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

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

 

④ 测试更改文本内容

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

 

 

您可以通过以下步骤在PyCharm中设置文件同步: 1. 打开PyCharm,选择您要同步的项目。 2. 在顶部菜单中,依次选择 "File" -> "Settings"。在Windows操作系统上,可能是 "File" -> "Preferences"。 3. 在设置窗口中,展开 "Appearance & Behavior",然后选择 "System Settings"。 4. 在右侧窗格中,找到并选择 "Synchronization"。 5. 在 "Synchronization" 部分,您可以选择启用文件同步功能。如果已经启用,请跳过此步骤。 6. 点击 "OK" 保存设置。 现在,您可以通过以下两种方式进行文件同步: 1. 手动同步: - 在PyCharm的底部工具栏中,找到并点击 "Sync Files" 按钮。如果找不到该按钮,请点击 "View" -> "Tool Windows" -> "Sync Files" 以显示它。 - 在弹出的对话框中,选择需要同步文件文件夹,并点击 "OK" 开始同步。 2. 自动同步: - 在PyCharm的底部工具栏中,找到并点击 "Auto Sync" 按钮。如果找不到该按钮,请点击 "View" -> "Tool Windows" -> "Sync Files" 以显示它。 - 在弹出的对话框中,选择需要同步文件文件夹,并点击 "OK"。 - PyCharm将自动监测并同步您所选择的文件文件夹的更改。 请注意,自动同步可能会对性能产生一定的影响,因此根据您的需求选择手动同步或自动同步。另外,如果您使用的是版本控制系统(例如Git),我们建议使用版本控制代替文件同步来管理代码的同步和协作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值