rsync+inotfiy 实时备份

rsync简介:

rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能

inotfiy简介:

Inotify 是一种强大的、异步的文件系统事件监控机制,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况

图片讲解:
在这里插入图片描述

实验准备:

192.168.40.111 A (备份源)
192.168.40.112 B (备份端)

关闭防火墙或者制定防火墙规则

两台都做:
systemctl stop firewalld
setenforce 0

1.安装rsync (两台都做)

yum -y install rsync

在B备份端操作:

2.配置rsync

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 = /data/mysqldata  #备份路径
comment = mysql data
ignore errors #跳过错误
read only = no #读
write only = no #写
hosts allow = 192.168.40.111 #备份源ip
list = false
auth users = rsync_user  #用户
secrets file = /etc/rsync.password #密码路径

2.建立rsync用户名和密码文为 /etc/rsync.password授权

[root@localhost ~]# echo "rsync_user:123" > /etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password 

3.创建备份目录

[root@localhost ~]# mkdir -p /data/mysqldata

4.启动rsync 并查看端口

[root@localhost ~]# rsync --daemon
[root@localhost ~]# netstat -nlput |grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      13338/rsync       
tcp6       0      0 :::873                  :::*                    LISTEN      14406/rsync

在A备份源操作

先安装epel-release源

[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum -y install inotify-tools rsync

2.客户端只需要设置rsync同步密码即可,不用重设用户名

[root@localhost ~]# echo "123" > /etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password 

3.编辑inotfiy监控脚本

[root@localhost ~]# vim inotify.sh
#!/bin/bash
ip=192.168.40.112 #备份端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.创建目录,执行脚本检测

执行前检查下目录是否存在,不存在记得创建
mkdir -p /data/mysqldata/
[root@localhost ~]# sh inotify.sh (脚本执行了之后就不要管了,相当于后台一直启动的)

5.在开个会话,创建文件测试,查看状态

[root@localhost ~]# cd /data/mysqldata/
[root@localhost mysqldata]# touch asdjfkla

[root@localhost ~]# sh inotify.sh 
/data/mysqldata was rsyncd
/data/mysqldata was rsyncd

在B(备份端查看)

[root@localhost mysqldata]# ls
asdjfkla

当发生报错时可以参照的博客:https://blog.csdn.net/u011415782/article/details/78727911

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值