首页 > 网络 > 其他 >

使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)

2019-01-11

使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)

inotify概述:Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。

查看是否支持inotify,从kernel 2.6.13开始正式并入内核。[root@ServerRsync ~]# uname -r3.10.0-862.el7.x86_64

安装上传下载工具[root@ServerRsync ~]# yum -y install lrzsz

rz 上载sz 下载

使用编译安装inotify-tools-3.13.tar.gz

安装inotify软件tar xf inotify-tools-3.13.tar.gz 解压软件包进入解压文件inotify-tools-3.13

[root@ServerRsync inotify-tools-3.13]# ./configure 检查安装环境

configure: error: no acceptable C compiler found in $PATHSee `config.log' for more details.没有安装gcc gcc-c++

安装gcc gcc-c++[root@ServerRsync inotify-tools-3.13]# yum -y install gcc* gcc-c++

[root@ServerRsync inotify-tools-3.13]# make -j 4 #make编译,将源代码编译成二进制,可执行的文件源码编译mysql或内核: make -j 4 快。

[root@ServerRsync inotify-tools-3.13]# make install # 安装

[root@ServerRsync inotify-tools-3.13]# inotifywait -h #帮助常用参数:-e 用来指定要监控哪些事件。 这些事件包括: create创建,move移动,delete删除,modify修改文件内容,attrib属性更改。-m 表示持续监控-r 表示递归整个目录-q 表示简化输出信息。

[root@ServerRsync ~]# mkdir /backup/allen88[root@ServerRsync ~]# echo aaa > /backup/aaa.txt[root@ServerRsync ~]# rm -rf /backup/allen88

在另一个终端登录,在/backup/作,然后,回到原来的终端查看监控变化情况。[root@ServerRsync inotify-tools-3.13]# inotifywait -mrq -e create,move,delete,modify /backup/

/backup/ CREATE,ISDIR allen88/backup/allen88/ IGNORED /backup/ DELETE,ISDIR allen88/backup/ CREATE aaa.txt/backup/ MODIFY aaa.txt/backup/ CREATE passwd/backup/ MODIFY passwd

注:使用inotifywait输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。

编写触发式同步脚本思路: 只要使用inotifywait检测到事件时,自动执行rsync进行同步操作即可。

[root@ServerRsync ~]# cat a.sh #!/bin/bashinotifywait -mrq -e create,move,delete,modify /backup/ | while read a b cdorsync -azP --delete /backup/ rsync_backup@10.1.3.231::backup --password-file=/etc/rsync.passworddone [root@ServerRsync ~]#

同步目录触发时时同步备份数据使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)

#######在使用rsync同步主数据库到从数据库操作时,rsync报错

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

原因是有文件没有写的权限,导致备份数据库权限不够,两种解决办法:

1、将服务端rsyncd.conf配置文件的uid和gid分别修改成root,重载下,/etc/rc.d/init.d/xinetd reload,再次执行同步,同步成功

2、将需要同步的文件夹及下属文件赋予777权限(chmod -R 777 xxx),再次执行同步,同步成功

注意:如果使用第一种办法,那么在执行完同步后,为了安全,记得将uid和gid修改回来,或修改成nobody

相关文章
最新文章
热点推荐