rsync简介: rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步
Inotify简介: Inotify 是一种强大的、异步的文件系统事件监控机制,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况
实验准备:
192.168.2.5 备份 | rsync server |
---|---|
192.168.2.7 源备份 | rsync client + inotify |
关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
两台都安装rsync
yum -y install rsync
备份端:
1.修改配置文件
vim /etc/rsyncd.conf
uid= root
gid= root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[mysqldata]
path = /backups #备份路径
comment = mysql data
ignore errors #跳过错误
read only = no #读
write only = no #写
hosts allow = 192.168.2.7 #备份源ip
list = false
auth users = rsync_user #用户
secrets file = /etc/rsync.password #密码路径
2.创建认证用户密码文件;修改文件权限
echo "rsync_user:123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
3.创建备份目录
mkdir -p /backups
4.启动rsyncd服务,并设置开机自启
systemctl start rsyncd.service 启动
systemctl enable rsyncd.service 开机自启
netstat -nltp |grep 873 查看端口
源备份端:
1.安装epel-release源与服务
yum -y install epel-release
yum -y install inotify-tools rsync
2.创建密码文件,客户端密码文件中,只需要密码即可。同时,密码文件的权限是600
echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
3.编辑inotfiy监控脚本
[root@localhost ~]# vim inotify.sh
#!/bin/bash
ip=192.168.2.5 #备份端ip
src=/data/mysqldata #数据目录
dst=mysqldata
user=rsync_user # 用户
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file
do
rsync -vzrtopg --delete --progress $src $user@$ip::$dst --password-file=/etc/rsync.password > /dev/null && echo "$src was rsyncd"
done
4.创建目录,执行脚本检测
[root@localhost ~]# mkdir -p /data/mysqldata/
[root@localhost ~]# sh inotify.sh
新开一个窗口,进行测试
cd /data/mysqldata
touch aaa
touch bbb
切换到备份端查看
ll /backups/mysqldata/
再切换到源备份端,删除aaa文件
去备份端查看
只剩bbb文件了,实时同步成功!!!