数据备份系列:Rsync 备份详解(二)

news2025/1/12 22:59:51

一、Rsync + Cron 场景使用

        在对数据备份要求实时性不高的情况下,可优先考虑该场景,选择一个合适的时间,对数据进行定时远程增量同步。

        在《数据备份系列:Rsync 备份详解(一)》中我们已经对服务搭建以及远程传输有了了解,接下来就是结合之前的内容进行扩展。

1.1 服务端准备工作

#删除之前测试的数据,在服务端创建两个文件夹,用于接收 linux 和 windows 客户端同步过来的数据
[root@rsync162 backup]# mkdir from_linux_client
[root@rsync162 backup]# mkdir from_windows_client 
[root@rsync162 backup]# ll
总用量 0
drwxr-xr-x. 2 root root 6 4月  24 09:53 from_linux_client
drwxr-xr-x. 2 root root 6 4月  24 09:53 from_windows_client

1.2 windows 客户端配置

(1)在 windows 客户端目录下新建一个 logs 目录,用于传输测试

#进程传输测试
C:\Users\Administrator>C:\soft\cwRsync_5.4.1_x86_Free\rsync.exe -avzp --password-file=/cygdrive/c/soft/cwRsync_5.4.1_x86_Free/passwd.txt --port=9999 /cygdrive/c/soft/cwRsync_5.4.1_x86_Free/logs test@192.168.0.162::proname/from_windows_client

#或者输入
C:\Users\Administrator>C:\soft\cwRsync_5.4.1_x86_Free\rsync.exe -avzp --password-file=C:\soft\cwRsync_5.4.1_x86_Free\passwd.txt --port=9999 /cygdrive/c/soft/cwRsync_5.4.1_x86_Free/logs test@192.168.0.162::proname/from_windows_client

(2)创建执行脚本 

#新建一个文件,重名名为 rsync.bat 编辑内容并保存:
@echo off
C:\soft\cwRsync_5.4.1_x86_Free\rsync.exe -avzp --password-file=/cygdrive/c/soft/cwRsync_5.4.1_x86_Free/passwd.txt --port=9999 /cygdrive/c/soft/cwRsync_5.4.1_x86_Free/logs test@192.168.0.162::proname/from_windows_client

(3)双击测试脚本

#服务端查看接收到的数据
[root@rsync162 from_windows_client]# pwd
/backup/from_windows_client
[root@rsync162 from_windows_client]# ll
总用量 0
drwx------. 2 root 401 106 4月  23 16:06 logs
[root@rsync162 from_windows_client]# ll logs/
总用量 23684
-rwx------. 1 root 401      284 3月  20 17:29 cc.txt
-rwx------. 1 root 401  3328826 4月  13 17:09 cwRsync_5.4.1_XiaZaiBa.zip
-rwx------. 1 root 401 20913856 3月  20 15:52 windows.zip.gz
-rwx------. 1 root 401      286 4月   3 13:10 新建文本文档.txt

(4)创建定时任务

 

 ​​​​​​​

 1.2 Linux 客户端配置

(1)和 windows 一样新建一个 logs 目录,用于传输测试

#先进行手动测试(手动测试没有问题)
[root@rsync164 ~]# rsync -avz --port 9999 --password-file /etc/rsync.pass /root/logs  test@192.168.0.162::proname/from_linux_client
sending incremental file list
logs/
logs/csp/
logs/csp/command-center.log.2022-05-10.0
logs/csp/command-center.log.2022-05-10.0.1
logs/csp/command-center.log.2022-05-10.0.2
logs/csp/command-center.log.2022-05-11.0
logs/csp/command-center.log.2022-05-11.0.1
logs/csp/command-center.log.2022-05-11.0.1.lck
logs/csp/command-center.log.2022-05-11.0.2
logs/csp/command-center.log.2022-05-11.0.2.lck
logs/csp/command-center.log.2022-05-11.0.3
logs/csp/command-center.log.2022-05-11.0.3.lck
logs/csp/command-center.log.2022-05-11.0.4
logs/csp/command-center.log.2022-05-11.0.lck
logs/csp/command-center.log.2022-05-12.0
logs/csp/command-center.log.2022-05-12.0.lck
logs/csp/command-center.log.2022-05-13.0
logs/csp/command-center.log.2022-05-16.0
logs/csp/command-center.log.2022-05-16.0.lck
logs/csp/command-center.log.2022-05-17.0
logs/csp/command-center.log.2022-05-17.0.lck
logs/csp/command-center.log.2022-05-18.0
logs/csp/command-center.log.2022-05-18.0.lck
logs/csp/command-center.log.2022-05-20.0
logs/csp/command-center.log.2022-05-20.0.lck
logs/csp/command-center.log.2022-05-23.0
logs/csp/command-center.log.2022-05-23.0.lck
......

(2)创建执行脚本

[root@rsync164 ~]# vi rsync.sh
#!/bin/bash
/usr/bin/rsync -avz --port 9999 --password-file /etc/rsync.pass /root/logs  test@192.168.0.162::proname/from_linux_client

(3)授权并测试脚本

#删除服务端数据,授予脚本执行权限
[root@rsync164 ~]# chmod 755 rsync.sh 
#测试执行(过程没有问题)
[root@rsync164 ~]# ./rsync.sh 
sending incremental file list
logs/
logs/csp/
logs/csp/command-center.log.2022-05-10.0
logs/csp/command-center.log.2022-05-10.0.1
logs/csp/command-center.log.2022-05-10.0.2
logs/csp/command-center.log.2022-05-11.0
logs/csp/command-center.log.2022-05-11.0.1
logs/csp/command-center.log.2022-05-11.0.1.lck
logs/csp/command-center.log.2022-05-11.0.2
logs/csp/command-center.log.2022-05-11.0.2.lck
logs/csp/command-center.log.2022-05-11.0.3
logs/csp/command-center.log.2022-05-11.0.3.lck
logs/csp/command-center.log.2022-05-11.0.4
logs/csp/command-center.log.2022-05-11.0.lck
logs/csp/command-center.log.2022-05-12.0
logs/csp/command-center.log.2022-05-12.0.lck
logs/csp/command-center.log.2022-05-13.0
logs/csp/command-center.log.2022-05-16.0
logs/csp/command-center.log.2022-05-16.0.lck
logs/csp/command-center.log.2022-05-17.0
logs/csp/command-center.log.2022-05-17.0.lck
logs/csp/command-center.log.2022-05-18.0
logs/csp/command-center.log.2022-05-18.0.lck
logs/csp/command-center.log.2022-05-20.0
logs/csp/command-center.log.2022-05-20.0.lck
logs/csp/command-center.log.2022-05-23.0
logs/csp/command-center.log.2022-05-23.0.lck
logs/csp/command-center.log.2022-05-25.0
......

#在服务端查看已经传输的文件
[root@rsync162 from_linux_client]# ll
总用量 0
drwxr-xr-x. 5 root root 48 5月  11 2022 logs
[root@rsync162 from_linux_client]# pwd
/backup/from_linux_client
[root@rsync162 from_linux_client]# ll
总用量 0
drwxr-xr-x. 5 root root 48 5月  11 2022 logs
[root@rsync162 from_linux_client]# ll logs/
总用量 20
drwxr-xr-x. 2 root root 16384 1月  28 09:22 csp
drwxr-xr-x. 2 root root    42 5月  10 2022 nacos
drwxr-xr-x. 2 root root    94 5月  12 2022 tecsun-job

(4)创建定时任务

#每台凌晨1点进行数据同步
[root@rsync164 ~]# crontab -e
* 1 * * * /root/rsync.sh

        到此 Rsync + cron 实验完成,过程中会遇到定时任务执行没反应的问题,特别的 windows 下的定时任务,一个是要做好单独运行测试,一个是要点击定时任务运行测试,如果都没有问题就可以了

二、Rsync + Inotify 场景使用

2.1 关于 Inotify

2.1.1 什么是 Inotify

        Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。需要注意的是,使用 Inotify 的系统内核要不低于 2.6.13。

       特定需求下我们是需要对文件数据进行实时增量同步的,而实时同步的优点在于:一旦同步源出现变化,则立即进行同步,无变化则不执行。

        在 Rsync 中,数据同步要么客户端向服务端推送文件,要么客户端从服务端下载文件,这里通过 Inotify 实现远程实时同步,就是用第一种方式。

2.1.2 Inotify 的辅助工具

  • inotifywait: 用于持续监控,实时输出结果
  • innotifywatch: 用于短期监控,任务完成后再出结果

2.2 Linux 客户端 Rsync 结合 Inotify 进行实时增量同步

前提:服务端搭建请参考《数据备份系列:Rsync 备份详解(一)》

(1)Inotify 的安装

[root@rsync164 ~]# yum install -y inotify-tools

(2)inotify 将监控事件结果通过脚本来执行 while 循环内的 rsync 同步请求操作

[root@rsync164 ~]# vi rsync_inotify.sh 
#/bin/bash
#rsync服务器
server=192.168.0.162
#传输用户
user=test
#密码文件
passwd=/etc/rsync.pass
#同步源文件(监控文件)
src=/opt/logs
#同步目标目录
dst=from_linux_client
#进行数据同步(提醒:生产环境中 --delete 参数要慎用)
rsync -azrtopg --delete --port 9999 --password-file $passwd $src $user@$server::proname/$dst
#监测 create,move,delete,modify 事件
/usr/bin/inotifywait -mrq -e create,move,delete,modify  $src | while read files;do
   rsync -azrtopg --delete --port 9999 --password-file $passwd $src $user@$server::proname/$dst
done

(3)客户端执行脚本测试

[root@rsync164 ~]# ll /opt/logs/
total 12
-rw-r--r-- 1 root root 1231 May  8 17:57 1.log
-rw-r--r-- 1 root root   21 May  8 17:58 2.log
-rw-r--r-- 1 root root   46 May  8 18:02 3.log
[root@rsync164 ~]# ./rsync_inotify.sh
#出现如下信息,说明密码错了,注意自己使用的用户和密码
[root@rsync164 ~]# ./rsync_inotify.sh  
@ERROR: auth failed on module proname
rsync error: error starting client-server protocol (code 5) at main.c(1656) [sender=3.1.2]

(4)服务端查看接收文件信息

[root@rsync162 ~]# ll /backup/from_linux_client/
总用量 0
[root@rsync162 ~]# ll /backup/from_linux_client/
总用量 0
drwxr-xr-x. 2 root root 63 5月   8 2023 logs
[root@rsync162 ~]# ll /backup/from_linux_client/logs/
总用量 12
-rw-r--r--. 1 root root 1231 5月   8 2023 1.log
-rw-r--r--. 1 root root   21 5月   8 2023 2.log
-rw-r--r--. 1 root root   46 5月   8 2023 3.log

(5)客户端对监控的目录做变化,对比服务端接收情况

#a.客户端新增4.log文件
[root@rsync164 logs]# ll
total 16
-rw-r--r-- 1 root root 1231 May  8 17:57 1.log
-rw-r--r-- 1 root root   21 May  8 17:58 2.log
-rw-r--r-- 1 root root   46 May  8 18:02 3.log
-rw-r--r-- 1 root root   10 May  8 18:14 4.log
#服务端文件变化,可以看到服务端也新增了4.log文件
[root@rsync162 ~]# ll /backup/from_linux_client/logs/
总用量 16
-rw-r--r--. 1 root root 1231 5月   8 2023 1.log
-rw-r--r--. 1 root root   21 5月   8 2023 2.log
-rw-r--r--. 1 root root   46 5月   8 2023 3.log
-rw-r--r--. 1 root root   10 5月   8 2023 4.log

#b.客户端修改3.log内容(如新增)
[root@rsync164 logs]# ll
total 16
-rw-r--r-- 1 root root 1231 May  8 17:57 1.log
-rw-r--r-- 1 root root   21 May  8 17:58 2.log
-rw-r--r-- 1 root root  129 May  8 18:29 3.log
-rw-r--r-- 1 root root   10 May  8 18:14 4.log
#服务端文件变化,可以看到3.log文件大小也变了
[root@rsync162 ~]# ll /backup/from_linux_client/logs/
总用量 16
-rw-r--r--. 1 root root 1231 5月   8 2023 1.log
-rw-r--r--. 1 root root   21 5月   8 2023 2.log
-rw-r--r--. 1 root root  129 5月   8 2023 3.log
-rw-r--r--. 1 root root   10 5月   8 2023 4.log

#c.客户端删除2.log文件
[root@rsync164 logs]# rm 2.log 
rm: remove regular file ‘2.log’? y
#服务端查看文件变化,可以看到2.log也没了(--delete参数起的作用)
[root@rsync162 ~]# ll /backup/from_linux_client/logs/
总用量 12
-rw-r--r--. 1 root root 1231 5月   8 2023 1.log
-rw-r--r--. 1 root root  129 5月   8 2023 3.log
-rw-r--r--. 1 root root   10 5月   8 2023 4.log

(5)后台运行持续监控脚本

[root@rsync164 ~]# ./rsync_inotify.sh &

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【虚幻引擎】UE5数据表格导入

数据表 顾名思义,DataTable是一种表格,里面装着大量游戏相关的数据,这些数据会按照其含义和用途分类, 其中,数据字段可以是UObject的任意有效属性(包括资产的引用信息)。设计师若要将 CSV文件导…

c++类的静态变量、静态函数 笔记

正文&#xff1a; 1、看下面这个是一个常规的类 #include <iostream> #include <windows.h> using namespace std; class BOX{int callsNum1;public:BOX(){callsNum;};int fun(){return callsNum;}; }; // int BOX::callsNum1;// 程序的主函数 int main() {SetCo…

【某区护网】从外网打点到拿下域控

目录 web打点 反弹shell与权限维持 主机信息收集与反向代理 攻击域控 前端时间刚结束了攻防演练活动&#xff0c;其中一项成果为拿下某集团域控制器权限&#xff0c;直接控制域内主机5000多台。以下为攻击过程的粗略记录&#xff0c;整体来说还是比较容易。 web打点 接到…

N1Book-第一章Web入门-任意文件读取漏洞-afr_2

本题为Nu1L团队编著的《从0到1&#xff1a;CTFer成长之路》配套题目。来源网站&#xff1a;https://book.nu1l.com/ 经过多方查阅资料&#xff0c;发现题目是&#xff0c;由于Nginx配置不当产生了目录穿越漏洞。本题使用的是OpenResty&#xff0c;而OpenResty是基于Nginx与Lua实…

门诊自助打印机可以办理哪些业务呢?

自助打印机可以办理以下业务&#xff1a; 检验报告单打印&#xff1a;患者可以通过医院验单自助打印机自主打印检验报告单&#xff0c;避免了等待时间&#xff0c;提高了医院的服务效率&#xff1b;检验报告查询&#xff1a;患者可以通过医院验单自助打印机查询自己的检验报告…

HHDBCS便捷功能简介

1. 连接管理 使用数据库时&#xff0c;不可避免的要建立很多个连接。 如果单纯用命令执行切换用户的话&#xff0c;实在是一件麻烦事。 那么这种麻烦事就交给HHDECS好了。 点击连接管理&#xff0c;一键切换。 而且能在不同数据库之间随意切换 2. 使用高级模式&#xff…

Linux环境安装iperf3(网络性能测试工具)

[rootlocalhost ]# yum search iperf 已加载插件&#xff1a;fastestmirror Loading mirror speeds from cached hostfile* base: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.huaweicloud.com* updates: mirrors.tuna.tsinghua.edu.cnN/S matched: iperf iperf3-devel.i6…

数据分析示例-python

数据分析示例-python 今天呢&#xff0c;博主把之前做过的一个小课题拿出来展示一下&#xff0c;当然这个课题呢做的工作量很大&#xff0c;也用到了很多可以参考的技术和代码&#xff0c;做数据分析工作的可以尝试学习学习。 这篇博客&#xff0c;我们先从数据集开始介绍。 对…

GSAP - 一款基于 JavaScript 的 web 动画库,简单几行代码就能写出丝滑流畅、高性能的动画效果

使用简单&#xff0c;但做出来的动画非常丝滑&#xff0c;也能实现很多专业的动画效果&#xff0c;推荐给大家。 关于 GSAP GSAP 的全名是 GreenSock Animation Platform&#xff0c;项目诞生非常早&#xff0c;远在 flash 繁荣的时代就存在&#xff0c;一直发展到今天已经是…

区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 进阶版 基础版 基本介绍 MATLAB实现QRBiGRU双向门控循环单…

时间序列预测(二)基于LSTM的销售额预测

时间序列预测&#xff08;二&#xff09;基于LSTM的销售额预测 小O&#xff1a;小H&#xff0c;Prophet只根据时间趋势去预测&#xff0c;会不会不太准啊 小H&#xff1a;你这了解的还挺全面&#xff0c;确实&#xff0c;销售额虽然很大程度依赖于时间趋势&#xff0c;但也会和…

YOLOv5教程-如何使用他人的数据集进行训练+测试评估模型

目录 一、前言与数据集 二、划分数据集以及配置文件的修改 1.把图片和.txt标注文件放入对应VOCData文件夹下 2..txt文件转为.xml文件 3.在VOCData目录下创建程序 split_train_val.py 并运行 4.将xml格式转为yolo_txt格式 5.设置测试文件 6.配置文件 三、聚类获得先验框 …

ABeam×StartUp | ABeam旗下艾宾信息技术开发(大连)与大连金勺科技展开合作交流

近日&#xff0c;ABeam 大中华区董事长兼总经理中野洋辅先生及艾宾信息技术开发&#xff08;大连&#xff09;&#xff08;以下简称“ABeam-TDC”&#xff09;的资深顾问团队一行人拜访了大连金勺科技有限公司&#xff08;以下简称“金勺科技”&#xff09;。 双方就各自发展的…

jsjiami.v6加密逆向分析介绍

随着互联网的不断发展&#xff0c;网站的安全性越来越受到重视。JS混淆加密技术是一种常用的保护网站安全的手段。jsjiami.v6是一款常用的JS混淆加密工具&#xff0c;下面我们来详细了解一下。 首先&#xff0c;我们来看一下一个使用jsjiami.v6进行混淆加密的案例代码&#xf…

线上 FullGC 问题排查实践 —— 手把手教你排查线上问题

一、问题发现与排查 1.1 找到问题原因 问题起因是我们收到了 jdos 的容器 CPU 告警&#xff0c;CPU 使用率已经达到 104% 观察该机器日志发现&#xff0c;此时有很多线程在执行跑批任务。正常来说&#xff0c;跑批任务是低 CPU 高内存型&#xff0c;所以此时考虑是 FullGC 引…

LC-1263. 推箱子(网格图BFS + DFS)

1263. 推箱子 难度困难105 「推箱子」是一款风靡全球的益智小游戏&#xff0c;玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示&#xff0c;其中每个元素可以是墙、地板或者是箱子。 现在你将作为玩家参与游戏&#xff0c;按规则将箱子 B 移…

Sleuth和zipkin

1、Sleuth是什么 为什么会出现这个技术&#xff1f;要解决哪些问题&#xff1f; 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&am…

2.RabbitMQ

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&am…

查询文件路径

1 问题 如何利用Java来查询文件的路径&#xff1f; 2 方法 1首先在类中利用main函数调用所有文件的和目录的代码。 2 然后开始写查询展示所有文件和目录的方法&#xff08;运用了递归的思想&#xff09; import java.io.File;import java.util.Arrays;import java.util.Scanner…

ETO、MTO、ATO与MTS(按单设计、按单生产、按单装配和库存生产)

按照企业组织生产的特点&#xff0c;可以把制造企业划分为ETO、ATO、MTO与MTS&#xff08;按单设计、按单装配、按单生产和库存生产&#xff09;四种生产类型。 按单设计&#xff08;Engineer To Order&#xff0c;ETO&#xff09;   在这种生产类型下&#xff0c;一种产品在…