欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rsync+inotify 实现远程文件实时增量同步至本地

程序员文章站 2024-03-21 17:58:34
...

版本控制

版本 作者 日期 修改记录 备注
V1.0 Mr.Wu 2019-10-15 初始创建

一、部署规划

Ip地址 主机名 角色 软件版本(系统自带)
10.1.1.26 web-server 生产服务器 rsync-3.1.2-4.el7.x86_64
10.1.1.27 rsync 备份服务器 rsync-3.1.2-4.el7.x86_64

二、环境说明

1. 系统版本

CentOS Linux release 7.6.1810 (Core) x86_64

2. 系统初始化

2.1 关闭防火墙及selinx

在所有虚拟机上进行以下操作:
	# systemctl stop iptables
	# sed -i '/SELINUX=enforcing/cSELINUX=disabled' /etc/selinux/config

2.2 关闭 NetworkManager 服务

在所有虚拟机上进行以下操作:
	# systemctl stop NetworkManager
	# systemctl disable NetworkManager

三、配置 web-server 服务器

1. 配置文件添加同步模块

在 web-server 服务器上进行:
[aaa@qq.com ~]# vim /etc/rsyncd.conf
		......
		[logs]
			path = /var/log
			comment = all files under this dir
[aaa@qq.com ~]# ll /var/log |wc -l
41

rsync+inotify 实现远程文件实时增量同步至本地

2. 启动 rsyncd 后台服务

[aaa@qq.com ~]# rsync --daemon
[aaa@qq.com ~]# lsof -i:873

rsync+inotify 实现远程文件实时增量同步至本地

四、配置备份服务器

1. 指定同步的路径 /backup

[aaa@qq.com /]# mkdir backup

2. 查看 web 服务端需同步的模块

[aaa@qq.com /]# rsync -a 10.1.1.26::

rsync+inotify 实现远程文件实时增量同步至本地

五、定时任务实现模块同步(在备份机上进行)

1. 编写同步脚本

[aaa@qq.com /]# vim /root/rsync.sh
		#!/bin/bash
		rsync -av aaa@qq.com.1.1.26::logs  /backup
[aaa@qq.com /]# chmod +x /root/rsync.sh

2. 编写定时同步任务测试

以每分钟执行一次进行测试
[aaa@qq.com /]# crontab -e
* * * * *  sh /root/rsync.sh &>/dev/null
[aaa@qq.com bakup]# date
2019年 10月 15日 星期二 20:38:26 CST
[aaa@qq.com bakup]# ll /backup/ |wc -l
0
[aaa@qq.com bakup]# date
2019年 10月 15日 星期二 20:39:01 CST
[aaa@qq.com bakup]# ll /backup/ |wc -l
41

六、 rsync+inotify实现文件实时同步(在web服务器部署inotify,在备份服务器配置rsync守护进程)

1. web 服务器部署

1.1 下载安装 inotify 软件

[aaa@qq.com ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[aaa@qq.com ~]# cd /usr/local/ && mv /usr/local/inotify-tools-3.14/ /usr/local/inotify
[aaa@qq.com ~]# cd /usr/local/inotify &&  ./configure
[aaa@qq.com inotify]# make && make install

1.2 检查 inotify 带来的两个命令

[aaa@qq.com inotify]# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 60720 10月 15 21:18 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 55080 10月 15 21:18 /usr/local/bin/inotifywatch
相关参数:
-m 保持监控状态
-r 递归监控
-q 只打印事件
-e 指定事件

事件:
move	移动
delete	删除
create	创建
modify	修改
attrib	属性信息

1.3 编写同步脚本

[aaa@qq.com inotify]# vim inotify.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /var/log/ |while read events
        do
                rsync -a --delete /var/log/  10.1.1.27:/backup/
                echo "`date +%F\ %T`出现事件$events" >> /var/rsync.log 2>&1
        done

1.4 配置web 服务器至备份服务器的免密登录

[aaa@qq.com inotify]# ssh-****** -t dsa -f /root/.ssh/id_dsa  -P "" 
[aaa@qq.com inotify]# ssh-copy-id  10.1.1.27

2. 备份服务器起后台进程

[aaa@qq.com log]# rsync --daemon
[aaa@qq.com log]# lsof -i:873
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   93582 root    4u  IPv4 236984      0t0  TCP *:rsync (LISTEN)
rsync   93582 root    5u  IPv6 236985      0t0  TCP *:rsync (LISTEN)

3. web 服务器起监控并添加文件测试

[aaa@qq.com inotify]# ./inotify.sh  &
[aaa@qq.com log]# mkdir 11{1..3}
[aaa@qq.com log]# touch file {5..8}
[aaa@qq.com log]# cat  /var/rsync.log
2019-10-15 22:28:11出现事件/var/log/ CREATE,ISDIR 111
2019-10-15 22:28:12出现事件/var/log/ CREATE,ISDIR 112
2019-10-15 22:28:12出现事件/var/log/ CREATE,ISDIR 113
2019-10-15 22:28:19出现事件/var/log/ CREATE file
2019-10-15 22:28:20出现事件/var/log/ ATTRIB file
2019-10-15 22:28:20出现事件/var/log/ CREATE 5
2019-10-15 22:28:20出现事件/var/log/ ATTRIB 5
2019-10-15 22:28:20出现事件/var/log/ CREATE 6
2019-10-15 22:28:20出现事件/var/log/ ATTRIB 6
2019-10-15 22:28:20出现事件/var/log/ CREATE 7
2019-10-15 22:28:21出现事件/var/log/ ATTRIB 7
2019-10-15 22:28:21出现事件/var/log/ CREATE 8
2019-10-15 22:28:21出现事件/var/log/ ATTRIB 8

4. 备份服务器查看

[aaa@qq.com backup]# ll 
drwxr-xr-x 2 root root 6 10月 15 22:28 111
drwxr-xr-x 2 root root 6 10月 15 22:28 112
drwxr-xr-x 2 root root 6 10月 15 22:28 113
-rw-r--r-- 1 root root 0 10月 15 22:28 5
-rw-r--r-- 1 root root 0 10月 15 22:28 6
-rw-r--r-- 1 root root 0 10月 15 22:28 7
-rw-r--r-- 1 root root 0 10月 15 22:28 8
-rw-r--r-- 1 root root 0 10月 15 22:28 file

相关标签: 远程同步 rsync