rsync下行同步+inotify实时同步部署

news2024/9/19 10:36:27

目录

一、rsync简介 

1.2  同步方式

1.2.1 全量备份

1.2.2 增量备份

1.2.3 差量备份

1.3 rsync的特点

1.4 rsync的优势与不足

1.5 rsync与cp、scp对比

1.6 rsync同类服务

二、rsync源服务器的关系

三、配置rsync源

3.1 基本思路

3.2 配置文件rsyncd.conf

3.3 独立的账号文件

3.4 启用rsync服务

四、rsync命令

五、配置源的两种表达方式

六、rsync本地复制实例

七、inotify简介

八、配置rsync下行同步

8.1 将 Master 服务器数据备份到 Slave 服务器 

8.2 server(192.68.19.7) 

九、rsync+ inotify实时同步

9.1 client (192.168.19.6)

9.2 server(192.168.19.7) 


一、rsync简介 

一款快速增量备份工具

  • Remote Sync,远程同步
  • rsync是一款开源的、快速的、多功能的、可实现全量以及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。
  • rsync软件支持跨平台,适用于Unix/linux/windows等多种操作系统平台。
  • rsync是一个快速和非常方便的文件复制工具。他能本地复制,远程复制,或者远程守护进程方式复制。
  • 支持本地复制,或者与其他SSH、rsync主机同步
  • 官方网站:https://rsync.samba.org/
  • 以其delta-transfer算法闻名。
  • rsync监听端口:873
  • rsync运行模式:C/S

1.2  同步方式

1.2.1 全量备份

  • 原有的数据全部传送
  • 把原来的文件和新的文件一起统一传送
  • 全量复制,效率低

1.2.2 增量备份

  • 在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输
  • 增量复制,效率高

1.2.3 差量备份

  • 备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性 ) 。

1.3 rsync的特点

  1. 能够镜像保存整个目录树和文件系统。
  2. 能够很容易作到保持原来文件的权限、时间、软硬连接等等。
  3. 无须特殊权限便可安装。
  4. 快速:第一次同步时 rsync 会复制所有内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程当中能够实行压缩及解压缩操做,所以可使用更少的带宽。
  5. 安全:可使用scp、ssh等方式来传输文件,固然也能够经过直接的socket链接。
  6. 支持匿名传输,以方便进行网站镜象。 

1.4 rsync的优势与不足

优势:

  • 与传统的cp、tar备份方式相比,rsync具备安全性高、备份迅速、支持增量备份等优势,经过rsync能够解决对实时性要求不高的数据备份需求,例如按期的备份文件服务器数据到远端服务器,对本地磁盘按期作数据镜像等。

缺点:

  • 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了不少不足,首先,rsync同步数据时,须要扫描全部文件后进行比对,进行差量传输。若是文件数量达到了百万甚至千万量级,扫描全部文件将是很是耗时的。并且正在发生变化的每每是其中不多的一部分,这是很是低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它能够经过linux守护进程的方式进行触发同步,可是两次触发动做必定会有时间差,这样就致使了服务端和客户端数据可能出现不一致,没法在应用故障时彻底的恢复数据。

1.5 rsync与cp、scp对比

  • cp命令是一种典型的将文件完整的拷贝到一个位置。而rsync是,第一次拷贝,在目标位置没有的时候,rsync是全量拷贝过去,但是第二次拷贝的时候,只会对差异项进行同步拷贝。所以如果对同一个文件进行二次备份的话,rsync速度对相较于cp而言更快。
  • cp只支持本地,而rsync支持远程
  • scp是基于cp原理,也是属于完整性的拷贝文件。假设rsync和scp拷贝的文件都是第一,目标地址都没有要同步的文件,此时,这两者的差异就在于,第一个,这个要传输的文件大不大,第二个要看在传输的过程中,用的带宽大不大。如果文件不大的情况下,scp是把数据从磁盘中的块存储提取出来,封装一下,网络传过去,scp更快,如果是更大的文件,比如说40G的,带宽只支持100M的带宽,scp想要传输,需要拆分数据,一段一段的传输。而rsync会根据一个逻辑意义上的空间,把数据划分出来,把数据先压缩在传输,所以这种方式而言,带宽校验,文件大,这个时候先压缩在传输会比较快。此时适合用rsync远程同步。

1.6 rsync同类服务

  • sync同步: 刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级快。
  • async异步: 将数据先放入缓冲区,再周期性(一般是30s)的去同步到磁盘。
  • rsync远程同步: remote synchronous

 

二、rsync源服务器的关系

  • rsync同步源
  • 指备份操作的远程服务器,也称为备份源
例:
A服务器同步B服务器的数据,B服务器就是备份源
反过来,B服务器同步A服务器的数据,那么A服务器就是备份源。
在远程同步任务中,负责发起rsync同步操作的客户机称为客户端,而负责响应来自客户端的rsync同步操作的服务器称为备份源,也称之为同步源。
  1. 在下行同步(下载)中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。
  2. 在上行同步(上传)中,同步源负责提供文档的目标位置,发起端应对该位置具有写入权限。

 

在做rsync的时候,从哪个端发起的就是(发起端),发起端到同步源就是 上行,反之就是下行 

 

三、配置rsync源

3.1 基本思路

  • 建立rsyncd.conf配置文件、独立的账号文件
  • 启用rsync的 --daemon模式

3.2 配置文件rsyncd.conf

  • 认证配置auth users、secrets file,不加则为匿名

3.3 独立的账号文件

  • 用户名:密码
  • 每行一个用户记录
  • 独立的账号数据,不依赖系统账号

3.4 启用rsync服务

  • 通过 --daemon独自提供服务,rsync --daemon
  • 执行kill $(cat /var/run/rsyncd.pid)关闭服务

四、rsync命令

命令使用语法

rsync 【选项】原始位置 目标位置

常用选项:常用的是-avz

常用选项说明
-r递归模式,对子目录以递归模式处理,包含目录及子目录中的所有文件
-l对于符号链接文件仍然复制为符号链接文件
-v ,-verbose显示同步过程的详细信息
-z在传输文件时进行压缩
-a,-archive归档模式,递归并保留对象属性,等同于-rlptgoD
-p保留文件的权限标记
-q,-quiet精简输出模式
-c,-checksum打开校验开关,强制对文件传输进行校验
-t保留文件的时间标记
-g保留文件的属组标记(仅超级用户使用)
-o保留文件的属主标记(仅超级用户使用)
-H保留硬链接文件
-A保留ACL属性信息
-D保留设备文件及其他特殊文件
- -delete删除目标位置有而原始位置没有的文件
- -checksum根据对象的校验和来决定是否跳过文件

五、配置源的两种表达方式

格式一:

用户名@主机地址::共享模块名
rsync -avz backuper@192.168.80.10::wwwroot /opt/

格式二:

rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@192,168,80,10/wwwroot /opt/

六、rsync本地复制实例

以下两者区别是什么?

  • rsync -avz zzh/ /opt/:只会拷贝abc目录下面的文件,而不会拷贝abc这个目录
  • rsync -avz /zzh /opt/: 会连着目录一起拷贝到opt下

 

 

七、inotify简介

  • 可以监控文件系统的变动情况,并做出通知响应
  • 调整inotify内核参数(优化)
  • /etc/sysctl.conf(内核参数配置文件)
max_queue_events        #监控事件队列大小
max_user_instances      #最多监控实例数
max_user_watches        #每个实例最多监控文件数  
  • inotifywait:用于持续监控,实时输出结果
  • inotifywatch:用于短期监控,任务完成后再输出结果

 

选项说明
-m持续进行监控
-r递归监控所有子对象
-q简化输出信息
-e指定要监控哪些事件类型
modify修改
create创建
move移动
delete删除

八、配置rsync下行同步

环境配置

主机操作系统IP地址软件 / 安装包 / 工具
MasterCentOS7192.168.19.6rsync
ServerCentOS7192.168.19.7rsync / inotify-tools-3.14.tar.gz

8.1 将 Master 服务器数据备份到 Slave 服务器 

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安装机制
 
yum install -y httpd rsync
#rsync系统一般已默认安装,安装httpd是为了生成/var/www/html目录(后续会用到作为共享目录)

 

vim /etc/rsyncd.conf
#编辑rsync配置文件
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.10.6
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.19.0/24
[wwwroot]        
path = /var/www/html
comment = Document Root of www.zzh.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = backuper	
secrets file = /etc/rsyncd_users.db

----详解----
uid = nobody											#用户id,表示共享权限能执行的身份
gid = nobody											#组id
use chroot = yes									#开启,禁锢在源目录,表示允许在访问我备份的目录或文件的时候,使用的角色是root,同时你访问本地目录时拥有的也是root权限
address = 192.168.19.6							#监听地址
port 873											#默认端口号为873
log file = /var/log/rsyncd.log						#日志文件存放位置
pid file = /var/run/rsyncd.pid						#存放进程id的文件位置
hosts allow = 192.168.19.0/24						#允许访问的主机网段,有点类似于黑白名单
[wwwroot]        									#共享模块的名称,rsync默认调用该模块,默认我调用的路径是该模块指定的路径
path = /var/www/html								#源目录路径
comment = Document Root of www.yh.com				#
read only = yes										#是否为只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z	#同步时不再压缩的文件类型,因为同步时,-avz已经进行压缩
auth users = backuper									#授权用户,使用wwwroot模块的用户是哪个用户,多个账户以空格隔开
secrets file = /etc/rsyncd_users.db					#存放账号信息的数据文件,一行一个
----

 
vim /etc/rsyncd_users.db
backuper:123456
#编辑用户账号文件,固定格式为[名称:密码],一行一个

 

chmod 600 /etc/rsyncd_users.db
#官方要求,最好只是赋权600!
 
rsync --daemon
#开启服务
netstat -natp | grep rsync
#检测端口号,确认服务是否成功开启
 

 

cd /var/www/html
#切换至共享目录下
touch a.html b.html
ls

 

8.2 server(192.68.19.7) 

systemctl stop firewalld.service 
setenforce 0
 
yum -y install rsync
 
cd /opt
mkdir yh
chmod 777 yh

 

 

vim /etc/server.pass
123456
 
chmod 600 /etc/server.pass 
 
rsync -az --delete --password-file=/etc/server.pass backuper@192.168.10.29::wwwroot /opt/yh
 
ls yh

 

 

 

九、rsync+ inotify实时同步

9.1 client (192.168.19.6)

vim /etc/rsyncd.conf
read only = no
 
kill `cat /var/run/rsyncd.pid`
netstat -natp | grep rsync
 
rsync --daemon
netstat -natp | grep rsync
 
chmod 777 /var/www/html

 

9.2 server(192.168.19.7) 

cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances 
cat /proc/sys/fs/inotify/max_user_watches 

 

vim /etc/sysctl.conf 
 
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 8192
 
sysctl -p

 

yum -y install gcc gcc-c++ 
 
#放入安装包
tar zxvf inotify-tools-3.14.tar.gz -C /opt
 
 
cd /opt/inotify-tools-3.14/
 
./configure
make -j4 && make install

 

 

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/haha/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/haha/ backuper@192.168.10.29::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

每个团队都应该跟踪的 5 个销售指标

销售是一项极具挑战性的任务,需要综合运用各种技能,包括沟通、说服和谈判。销售人员不仅要对自己的产品了如指掌,还要深入了解他们的潜在客户。 因此,如果你的企业有销售部门,并且正在积极寻求、开启和完成销售&#…

商城免费搭建之java商城 开源java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

 1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Re…

I.MX6ULL_Linux_驱动篇(41)platform设备驱动框架

我们在前面几章编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作。像I2C、SPI、 LCD 等这些复杂外设的驱动就不能这么去写了, Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,在这个思路下…

Jetson Nano之ROS入门 -- YOLO目标检测与定位

文章目录 前言一、yolo板端部署推理二、目标深度测距三、目标方位解算与导航点设定1、相机成像原理2、Python实现目标定位 总结 前言 Darknet_ros是一个基于ROS(机器人操作系统)的开源深度学习框架,它使用YOLO算法进行目标检测和识别。YOLO算…

Apache Storm入门介绍之三分钟看懂Apache Storm

文章目录 0.前言1. 什么是 Apache Storm?1.1. Nimbus1.2. Zookeeper1.3. Supervisor1.4. Worker1.5 集群模式下各组件职责 2. 核心概念2.1基本架构和任务模型2.2 工作流程 3. 源码地址3.1. 代码结构3.1. 核心模块介绍 4. Storm入门实例0.创建java工程并引入依赖1. 创…

印度转向第一人口大国的背后,是红利还是负担?

KlipC报道:印度正在成为全球第一人口大国,人们对于该事件的关注也持续不断。 KlipC的合伙人Andi Duan表示:“自1881年以来,印度人口就一直增长,据联合国人口统计的数据显示”,今年4月印度人口已经成为全球最…

ElasticSearch_学习笔记

一、初始elasticsearch 什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来时限搜素、日志统计、分析、系统监控等功能。什么是elasitc stack(ELK)? 是以elasticsearch为核心的技术栈,包括 beats、L…

C#——多线程之Thread

C#——多线程之Thread 前言一、Thread是什么?二、各应用场景以及实例分析1.前台线程和后台线程:2.异步处理3.线程状态及手动销毁线程4.线程同步/等待线程完成 总结 前言 上次简单讲述了关于多线程中Task的相关应用以及场景。今天我们来看一下多线程中Th…

这就是ChatGPT,走进我们的生活!

这就是ChatGPT,走进我们的生活! 早在年初,合作导师将我叫过去,让我了解学习一下ChatGPT,看能不能对我们的生活有所帮助。一直使用着国内镜像,五月份我才注册了OpenAI的账户。如今,打开购物商城购…

安全测试国家标准解读——并发程序安全

本系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理&#xff…

leetcode 134. 加油站

2023.7.31 这题直观思路是暴力法&#xff0c;用一个for循环遍历所有起点&#xff0c;判断哪个起点能走回来。 不过最后有几个很阴间的示例通过不了&#xff1a; class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {f…

SpringBoot使用MyBatis Plus + 自动更新数据表

1、Mybatis Plus介绍 Mybatis&#xff0c;用过的都知道&#xff0c;这里不介绍&#xff0c;mybatis plus只是在mybatis原来的基础上做了些改进&#xff0c;增强了些功能&#xff0c;增强的功能主要为增加更多常用接口方法调用&#xff0c;减少xml内sql语句编写&#xff0c;也可…

编写Java代码制造一个内存溢出的情况

编写Java代码制造一个内存溢出的情况 这将会是一篇比较邪恶的文章&#xff0c;当你想在某个人的生活中制造悲剧时你可能会去google搜索它。在java的世界里&#xff0c;内存溢出仅仅只是你在这种情况下可能会引入的一种bug。你的受害者会在办公室里度过几天甚至是几周的不眠之夜…

IO流(3)—转换流与打印流

目录 1. 为什么要用到转换流&#xff1f; 2. 字符输入转换流&#xff08;重点掌握&#xff09; 3. 字符转换输出流&#xff08;理解即可&#xff09; 4. 认识打印流 5. 打印流的作用 6. PrintStream如何使用&#xff1f; 7. PrintStream 内部没有缓冲区 8. PrintWriter…

四、Spring源码-DI的过程

Spring源码-DI的过程 接下来我们分析下Spring源码中Bean初始化过程中的DI过程。也就是属性的依赖注入。 一、构造参数依赖 1. 如何确定构造方法 在Spring中生成Bean实例的时候默认是调用对应的无参构造方法来处理。 Component public class BeanK {private BeanE beanE;priv…

LUN映射出错导致写操作不互斥的服务器数据恢复案例

服务器数据恢复环境&#xff1a; 某公司的光纤SAN存储系统&#xff0c;6块硬盘组建一组RAID6&#xff0c;划分若干LUN&#xff0c;MAP到不同的SOLARIS操作系统服务器上。 服务器故障&分析&#xff1a; 由于业务增长需要新增应用&#xff0c;工作人员增加了一台IBM服务器&am…

共享麻将室开启无人值守新潮流

共享麻将室是指一种基于共享经济模式&#xff0c;将麻将室资源进行共享的服务&#xff0c;为用户提供舒适、方便的娱乐场所。通过共享麻将室&#xff0c;用户可以按需预约和使用麻将室&#xff0c;享受社交娱乐的同时&#xff0c;减少了个人投资和管理麻将室的成本。 相比传统麻…

kotlin 编写一个简单的天气预报app(二)增加搜索城市功能

增加界面显示openweathermap返回的信息。 在activity_main.xml里增加输入框来输入城市&#xff0c;在输入款旁边增加搜索按钮来进行查询。 然后原来显示helloworld的TextView用来显示结果。 1. 增加输入城市名字的EditText <EditTextandroid:id"id/editTextCity"…

puppeteer代理的搭建和配置

puppeteer代理的搭建和配置 本文深入探讨了Puppeteer在网络爬虫和自动化测试中的重要角色&#xff0c;着重介绍了如何搭建和配置代理服务器&#xff0c;以优化Puppeteer的功能和性能。文章首先介绍了Puppeteer作为一个强大的Headless浏览器自动化工具的优势和应用场景&#xf…

【嵌入式学习笔记】嵌入式入门1——GPIO

1.什么是GPIO General Purpose Input Output&#xff0c;即通用输入输出端口&#xff0c;简称GPIO&#xff0c;作用是负责采集外部器件的信息或者控制外部器件工作&#xff0c;即输入输出。 2.STM32 GPIO简介 2.1.GPIO特点 不同型号&#xff0c;IO口数量可能不一样&#x…