部署rsync远程同步+inotify监控
案例要点
Rsync
基本概念
Rsync 可以通过网络在不同的主机之间高效地传输和同步文件。它采用 “rsync 算法”,只传输文件中变化的部分,而不是整个文件,因此在同步大量文件或大文件时能显著节省网络带宽和时间。
安装
在大多数 Linux 发行版中,可以使用包管理工具进行安装。
- CentOS 系统:可以使用
yum install rsync
命令安装。- Ubuntu:使用
apt-get install rsync
命令。基本语法
rsync [选项] [源文件或目录] [目标文件或目录]
常用选项
-a
:归档模式,以递归方式传输文件,并保持文件的权限、所有权、时间戳等属性不变,相当于-rlptgoD
选项的组合。-r
:递归复制目录及其子目录。-l
:保留软链接。-p
:保留文件权限。-t
:保留文件时间戳。-g
:保留文件属组。-o
:保留文件所有者。-D
:保留设备文件和特殊文件。-z
:传输时进行压缩,以减少网络带宽占用。-v
:详细模式,输出详细的同步信息,包括文件的传输进度、名称等,方便用户了解同步过程。--delete
:删除目标目录中源目录不存在的文件,确保目标目录与源目录的内容一致。
inotify 监控系统
inotify 是 Linux 内核提供的一种文件系统事件监控机制,它允许应用程序监听文件或目录的各种变化(如修改、创建、删除等),是实现文件系统监控、自动化任务的核心技术。
核心功能与应用场景
实时监控
- 监控文件变更,触发自动备份、同步或编译
- 示例:网站目录变更时自动刷新服务器缓存
安全审计
- 检测敏感目录的未授权访问或修改
- 示例:监控
/etc/passwd
、/var/www/html
等目录自动化工作流
- 文件上传后自动触发处理(如转码、压缩)
- 示例:监控
/uploads
目录,新文件上传后自动生成缩略图
案例场景
rsync/inotify主机端 192.168.180.143
rsync/inotify客户端 192.168.180.144
案例过程
关闭防火墙
#关闭防火墙和SElinux
systemctl stop firewalld && setenforce 0
resync远程同步
配置resync主设备
#查看系统内核版本
uname -r
下载服务
#下载 rsync 软件包和 Web 包
yum - y install rsync httpd
配置rsync文件
#配置rsync 主配置文件
vim /etc/rsyncd.conf#去除#注释
uid = nobody
gid = nobody
use chroot = yes#末尾添加
[wwwroot]
path = /var/www/html
read only = no
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db
创建用户密码文件并赋予权限
#将用户密插入到用户密码文件
echo "backuper:abc-123" > /etc/rsyncd_users.db#赋予文件仅所有者权限
chmod 600 /etc/rsyncd_users.db
启动服务并查看启动状态
#启动web服务与rsync服务
systemctl start httpd
rsync --daemon#查看服务启动进程
netstat -nultp | grep rsync
netstat -nultp | grep httpd
赋予web页面目录权限
#赋予目录最大权限
chmod 777 /var/www/html/
rsync主内创建文件
#切换到Web页面目录,创建文件
cd /var/www/html/
touch abc.txt
配置rsync客户端
下载相应服务
#下载web服务与rsync服务
yum -y install rsync httpd
实施远程连接
rsync -zva backuper@192.168.180.143::wwwroot /var/www/html/
编写远程同步脚本
#创建脚本文件
vim /opt/inotify.sh#!/bin/bash
JK="inotifywait -mrq -e modify,create,move,delete /var/www/html/"
TB="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.180.143::wwwroot"
$JK | while read DIRECTORY EVENT FILE
do$TB
done
赋予执行权限
#赋予脚本执行权限
chmod +x /opt/inotify.sh
编写密码文件并赋予权限
#修改密码文件
echo "abc-123" > /etc/server.pass#赋予仅所有者权限
chmod 600 /etc/server.pass
rsync客户端执行脚本文件
#执行脚本文件
/opt/inotify.sh
创建文件查看同步
touch /var/www/html/123.txt
查看rsync主文件同步
inotify远程监控
inotify主机端
下载编译安装包
yum -y install gcc gcc-c++
导入并解压inotify压缩文件
tar zxf inotify-tools-3.14.tar.gz
配置编译安装
#切换到软件包目录下
cd inotify-tools-3.14#执行初始化安装
./configure && make && make install
监控文件事件
#监听/var/www/html目录的修改,创建,删除信息插入文件并在后台运行。
cd
touch inotify.txt
inotifywait -mrq -e modify,create,delete /var/www/html/ >> inotify.txt &#在Web目录下创建文件
cd /var/www/html/
touch a.txt
touch b.txt
touch c.txt d.txt
rm -rf b.txt d.txt#查看监听文件
cd
cat inotify.txt