rsync+inotify远程实时同步部

rsync+inotify远程实时同步部署

一、rsync简介

Rsync(Remote Sync)是一个功能丰富、快速和灵活的文件复制和同步工具。它以增量复制的方式工作,能够仅复制源和目标之间发生变化的文件或部分文件,从而减少了数据传输的时间和网络带宽的消耗。

Rsync 使用一个特殊的算法来识别文件的差异,并仅传输发生变化的部分,以实现高效的文件同步和备份。它还支持多种模式和选项,使其非常适应各种不同的应用场景。

① rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。

② rsync软件支持跨平台,适用于unix/ linux/windows等多种操作系统平台

③ rsync是一个快速和非常方便的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制

④ 以其delta-transfer算法闻名。

⑤ rsync监听端口:873

⑥ rsync运行模式:C/S

1.rsync同步方式

1、完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。

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

3、增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

2、备份的方式

1、发起端:负责rsync 同步操作的客户机叫做发起端,通知服务器我要备份你的数据

2、备份源:负责响应来自客户机rsync 同步操作的服务器叫做备份源,需要备份的服务器

3、服务端:运行rsyncd服务,一般来说,需要备份的服务器

4、客户端:存放备份数据

3.rsync同步源

rsync同步源:指备份操作的远程服务器,也称备份源。

下行同步:下行同步是将文件从远程或源端同步到本地或目标端。
在下行同步(下载)中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。

上行同步:上行同步是将文件从本地或源端同步到远程或目标端。
在上行同步(上传)中,同步源负责提供文档的目标位置,发起端应对该位置具有写入权限。

二、rsync命令基本用法

基本格式:rsync [选项] 原始位置 目标位置

常用选项:

-r

递归模式,包含目录及子目录中的所有文件

-l

对于符号链接文件仍然复制为符号链接文件

-v

显示同步过程的详细信息

-z

在传输文件时进行压缩

-a

归档模式,保留文件的权限、属性等信息,等同于组合选项”-rlptgoD“

-p

保留文件的权限标记

-t

保留文件的时间标记

-g

保留文件的数组标记 (仅超级用户使用)

-o

保留文件的属主标记(仅超级用户使用)

-H

保留硬链接文件

-A

保留ACL属性信息

-D

保留设备文件及其他特殊文件

–delete

删除目标位置有而原始位置没有的文件

–checksum

根据校验和(而不是文件大小,修改时间)来决定是否跳过文件

三、配置源的两种表达方法

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

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

四、配置服务端与客户端的实验

配置环境

Master    CentOS7 192.168.40.105     rsync

Slave       CentOS7 192.168.40.106     rsync / inotify-tools-3.14.tar.g Master 服务器数据备份到 systemctl stop firewalld

systemctl disable firewalld

setenforce 0

#关闭防火墙及安装机制

yum install -y httpd

#rsync系统一般已默认安装,安装httpd是为了生成/var/www/html目录(后续会用到作为共享目录)

vim /etc/rsyncd.conf

#编辑rsync配置文件

uid = root

gid = root

use chroot = yes

address = 192.168.40.105

port 873

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.40.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 = root #用户id,表示共享权限能执行的身份

gid = root #组id

use chroot = yes #开启,禁锢在源目录,表示允许在访问我备份的目录或文件的时候,使用的角色是root,同时你访问本地目录时拥有的也是root权限

address = 192.168.40.105 #监听地址

port 873 #默认端口号为873

log file = /var/log/rsyncd.log #日志文件存放位置

pid file = /var/run/rsyncd.pid #存放进程id的文件位置

hosts allow = 192.168.40.0/24 #允许访问的主机网段,有点类似于黑白名单[wwwroot]         #共享模块的名称,rsync默认调用该模块,默认我调用的路径是该模块指定的路径

path = /var/www/html #源目录路径

comment = Document Root of www.zzh.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

#检测端口号,确认服务

systemctl stop firewalld.service

setenforce 0

将指定的资源下载到本地/opt 目录下进行备份。

格式一:

rsync -avz backuper@192.168.40.105::wwwroot /opt/ #密码123456

格式二:

rsync -avz rsync://backuper@192.168.40.105/wwwroot /opt/

#免交互格式配置:

echo "123456" > /etc/server.pass

chmod 600 /etc/server.pass

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

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

#放入安装包解压

tar zxvf inotify-tools-3.14.tar.gz -C /opt

cd /opt/inotify-tools-3.14/

 ./configure

make && make install

可以先执行“inotifywait”命令,然后另外再开启一个新终端向 /opt/data 目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。

inotifywait -mrq -e modify,create,move,delete /opt/data

#选项“-e”:用来指定要监控哪些事件

#选项“-m”:表示持续监控

#选项“-r”:表示递归整个目录

#选项“-q”:简化输出信息

vim /opt/inotify.sh

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /opt/data/"

RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/data/ backuper@192.168.40.105::wwwroot"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE

##while判断是否接收到监控记录do

    if [ $(pgrep rsync | wc -l) -le 0 ] ; then

        $RSYNC_CMD

    fi

done

chmod +x /opt/inotify.sh

chmod 777 /opt/data/

chmod +x /etc/rc.d/rc.local

echo '/opt/inotify.sh' >> /etc/rc.d/rc.local #加入开机自动执行

五、rsync的应用场景

1、增量同步

2、备份/迁移:可以作为辅助工具(mysql 主从复制 rsync +inotify ——》趋于一致 双向同步——MM,但是只能在并发量不大的时候可以用)

3、假设mysql 从主机A迁移到主机B(一主两从模式)

一主两从模式迁移方案

①确定迁移的时间、业务线停止的时间、要写文档描述具体操作,要发邮件审批

②确认迁移后的节点的环境问题(资源环境 + 系统依赖环境 + mysql内部的格式环境)

1)例如自增长,自增长可能会导致主从复制不一致的情况

2)版本迁移问题,比如说低版本向高版本迁移。两个版本中的差异比较大,数据迁移比较重要,需要和研发沟通,让研发开发一个工具,让低版本可以转成高版本工具格式,使用工具迁移)

③ 如果数据库是相同版本,可以用rsync + inotify持续同步

④ 测试、之前还要编写回滚方案

⑤ 提交检修申请 22:00 - 00:00

  • 39
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux运维老纪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值