Inofity+Rsync实时同步服务部署

发布时间 2023-05-31 21:43:58作者: Junwu’sblog

第一步:部署rsync服务

1.1 服务端:

1.检查rsync是否安装
[root@rsync-backup ~]# rpm -qa rsync
rsync-3.1.2-12.el7_9.x86_64
2.对rsync服务进行配置
[root@rsync-backup ~]# cat /etc/rsyncd.conf 
uid = rsync
gid = rsync
fake super = yes 
use chroot = no
max connections = 200
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 10.0.0.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = This is rsync backup!
path = /backup/
3.创建rsync管理用户
[root@rsync-backup ~]# useradd -s /sbin/nologin -M rsync
4.创建数据备份储存目录,目录修改属主
[root@rsync-backup ~]# mkdir /backup/
[root@rsync-backup ~]# chown -R rsync.rsync /backup/
5.创建认证用户密码文件并进行授权600
[root@rsync-backup ~]# echo "rsync_backup:123456" > /etc/rsync.password 
[root@rsync-backup ~]# chmod 600 /etc/rsync.password 
6.启动rsync服务
[root@rsync-backup ~]# rsync --daemon
至此rsync服务端配置完成
[root@rsync-backup ~]# ps -ef | grep rsync
root        654      1  0 12:17 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
root       1346   1295  0 13:09 pts/0    00:00:00 grep --color=auto rsync

1.2 客户端配置:

1.检查是否安装rsync
[root@nfs ~]# rpm -qa rsync
rsync-3.1.2-12.el7_9.x86_64
2.创建安全认证文件,并进行修改权限600
[root@nfs ~]# echo "123456" > /etc/rsync.password 
[root@nfs ~]# chmod 600 /etc/rsync.password 
3.测试数据传输(注意:一定要关闭服务端的selinux、防火墙)
[root@nfs ~]# rsync -avz /opt/ rsync_backup@10.0.0.40::backup --password-file=/etc/rsync.password 
sending incremental file list
./
001.txt
002.txt

检查Linux版本是否支持Inotify机制

只有Linux内核版本在2.6.13起才支持,以及是否存在三个系统文件,存在则支持

检查Inotify相关文件
[root@nfs ~]# ll /proc/sys/fs/inotify/
total 0
-rw-r--r--. 1 root root 0 May 30 13:28 max_queued_events
-rw-r--r--. 1 root root 0 May 30 13:28 max_user_instances
-rw-r--r--. 1 root root 0 May 30 13:28 max_user_watches

第二步:部署inotify服务(首先确认是否有epel

[root@nfs ~]# yum install -y inotify-tools
[root@nfs ~]# rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
  • inotifywait:在被监控的目录等待特定文件系统事件(open、close、delete等事件),执行后处于阻塞状态,适合在Shell脚本中使用,是实现监控的关键
  • Inotifywatch:收集被监控的文件系统使用的统计数据(文件系统事件发生的次数统计

第三步:手动测试inotify监控事件

[root@nfs ~]# inotifywait -mrq --timefmt "%y-%m-%d %T" --format "%T %w%f 当前事件:%e" -e close_write,delete /opt/

再开一个终端 [root@nfs opt]# rm
-rf * #inotify检测信息如下: 23-05-30 13:39:54 /opt/001.txt 当前事件:DELETE 23-05-30 13:39:54 /opt/002.txt 当前事件:DELETE 23-05-30 13:39:54 /opt/003.txt 当前事件:DELETE 23-05-30 13:39:54 /opt/004.txt 当前事件:DELETE

编写实时监控和复制脚本

1.编写一个脚本,能够循环读取文件夹内容
[root@nfs ~]# cat /tmp/inotify.sh 
#!/bin/bash
cmd="/usr/bin/inotifywait"
$cmd -mrq --timefmt "%y-%m-%d %T" --format "%T %w%f 当前事件:%e" -e close_write,delete\
 /data | \
while read line
do
    cd /data && \
    rsync -az --delete ./ rsync_backup@10.0.0.40::backup
done
2.执行脚本
[root@nfs ~]# sh -x /tmp/inotify.sh 
+ cmd=/usr/bin/inotifywait
+ /usr/bin/inotifywait -mrq --timefmt '%y-%m-%d %T' --format '%T %w%f 当前事件:%e' -e close_write,delete /data
+ read line

测试脚本没问题后,将脚本放置后台运行,实时监听文件变化,进行同步,确保数据备份安全
1.脚本放置后台运行,在前台运行会占用终端,且终端关了,任务会断
[root@nfs data]# /bin/sh /tmp/inotify.sh &
[1] 1397
[root@nfs data]# jobs 
[1]+  Running                 /bin/sh /tmp/inotify.sh &
2.该任务添加至开机启动文件
[root@nfs ~]# tail -2 /etc/rc.local 
# inotify + rsync script
/bin/sh /tmp/inotify.sh &

至此Rsync+inotify实施复制结束