syrnc+sersync


rsync实时同步(inotify-tools)

inotify 是一个可以监控目录和文件的工具
监控文件内容是否发生变化
目录中是否删除或创建新文件
实时同步:通过监控文件和目录的变化,来触发rsync推送数据的动作,起到实时同步的作用
## 安装inotify
# 明确:inotify安装在客户端上(web01 web02)
[root@web01 ~]# yum install -y inotify-tools
[root@web02 ~]# yum install -y inotify-tools
inotify的选项和参数
-m 持续监控
-r 递归
-q 静默,仅打印时间信息
--timefmt 指定输出时间格式
--format 指定事件输出格式
%Xe 事件
%w 目录
%f 文件
-e 指定监控的事件
access 访问
modify 内容修改
attrib 属性修改
close_write 修改真实文件内容
open 打开
create 创建
delete 删除
umount 卸载


#######命令测试 ##############
inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /backup



##########脚本###########
## 实时同步:rsync + inotify
[root@web01 ~]# cat bak.sh
#!/bin/bash
export RSYNC_PASSWORD=123
bak_dir=/zls_backup/
/usr/bin/inotifywait -mrq --format '%Xe %w %f' -e    create,modify,delete,attrib,close_write $bak_dir|while read line;do
rsync -az --delete $bak_dir [email protected]::zls
done

sersync实时同步

实时同步的目的:为了保证数据的一致性
sersync+RSYNC(√)、inotify+rsync
Inotify 是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动。可以非常方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应。 rsync+inotify 可以实触发式实时同步增量备份
sersync 是国人基于 rsync+inotify-tools 开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。

环境准备

主机名 wanIP lanIP 角色 应用
backup 41 41 仓库,备份所有数据 rsync服务端
web01 7 7 需要备份数据的机器, rsync的客户端sersync,inotfy
web02 8 8 需要备份数据的机器 rsync的客户端sersync,inotfy

安装rsync服务端并配置

# 1.安装rsync服务端
[root@backup ~]# yum install -y rsync
# 2.配置rsync服务端
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
安装配置sersync(web01 、 web02)
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
#####################################
[backup] ## 做数据备份(昨天)
path = /backup
[data] ## 做数据实时同步(今天)
path = /data
# 3.创建目录
[root@backup ~]# mkdir /backup
[root@backup ~]# mkdir /data
# 4.创建用户
[root@backup ~]# useradd rsync -s /sbin/nologin -M
# 5.给目录授权
[root@backup ~]# chown rsync.rsync /backup
[root@backup ~]# chown rsync.rsync /data
# 6.创建密码文件
[root@backup ~]# echo "rsync_backup:123" > /etc/rsync.password
# 7.密码文件授权600
[root@backup ~]# chmod 600 /etc/rsync.password
# 8.启动服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd

安装配置sersync(web01、 web02)

image-20240527152730565

# 0.安装依赖包
[root@web01 app]# yum install -y rsync inotify-tools
# 1.下载sersync安装包
[root@web01 ~]# wget
http://test.driverzeng.com/other/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 2.创建程序安装目录
[root@web01 ~]# mkdir /app
# 3.解压安装包
[root@web01 ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /app/
# 4.修改程序目录名
[root@web01 app]# mv /app/GNU-Linux-x86 /app/sersync-2.5.4
# 5.制作软链接
[root@web01 app]# ln -s /app/sersync-2.5.4 /app/sersync
# 6.修改配置
[root@web01 app]# vim /app/sersync/confxml.xml
<inotify>
		<delete start="true"/>
		<createFolder start="true"/>
		<createFile start="true"/>
		<closeWrite start="true"/>
		<moveFrom start="true"/>
		<moveTo start="true"/>
		<attrib start="true"/>
		<modify start="true"/>
</inotify>
	<sersync>
			<localpath watch="/data">  ## 实时同步目录
			<remote ip="172.16.1.41" name="data"/>  ## 主机  和 备份目录变量名
			<!--<remote ip="192.168.8.39" name="tongbu"/>-->
			<!--<remote ip="192.168.8.40" name="tongbu"/>-->
			</localpath>
<rsync>
		<commonParams params="-az "/>  ##  选项  
		<auth start="true" users="rsync_backup"  ##  本机存放目标主机的密码文件
		passwordfile="/etc/rsync.pass"/>
		<userDefinedPort start="false" port="874"/><!-- port=874 -->
		<timeout start="false" time="100"/><!-- timeout=100 -->
		<ssh start="false"/>

# 7.创建数据目录
[root@web01 app]# mkdir /data
# 8.创建密码文件
[root@web01 app]# echo '123' > /etc/rsync.pass
# 9.授权
[root@web01 app]# chmod 600 /etc/rsync.pass
# 10.启动sersync
[root@web01 app]# /app/sersync/sersync2 -rdo /app/sersync/confxml.xml