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

rsync+inotify实时同步配置

程序员文章站 2022-07-01 17:27:04
...

一、概述

  • Remote Sync,远程同步,它是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树
  • 支持增量备份、保持连接和权限,且采用优化的同步算法,传输前执行压缩,因此分床适用于异地备份、镜像服务器等应用
  • 支持本地复制,或者与其他SSH、rsync主机同步

二、实验环境介绍

2台服务器,

一台client客户端:192.168.5.129/24

一台rsync服务器:192.168.5.130/24

三、实验目的

  • client能够远程获取rsync服务器的文件。
  • 并且通过inotify机制监控client获取到文件,编写相关shell脚本;
  • 让client的文件和rsync中的文件实时同步。

四、rsync常用命令

rsync+inotify实时同步配置

五、实验步骤

5.1、rsync服务器配置

yum -y install httpd                ##安装web服务器用于测试
yum -y install rsync            ##安装rsync

  • 修改rsync配置文件
uid = nobody
 gid = nobody
 use chroot = yes                            ####禁锢在源目录
 address = 192.168.5.129                   ####监听地址
 port 873                                       ####监听端口号
 log file = /var/log/rsyncd.log            ####日志文件位置
 pid file = /var/run/rsyncd.pid            ####存放进程ID的文件位置
 hosts allow = 192.168.5.0/24              ####允许访问的客户机地址
[wwwroot]                                           ####共享模块名称
 path = /var/www/html                       ####源目录的实际路径
 comment = Document Root of www.51xit.top
 read only =no                                  #####是否只读
 dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z             ####同步时不在压缩的文件类型
 auth users =backuper                               #####授权账户
 secrets file = /etc/rsyncd_users.db                 ####存放账户信息的数据文件

  • 创建授权的账号和密码
vi /etc/rsyncd_users.db
backuper:pwd123              ###账号backuper密码pwd123
chmod 600 /etc/rsyncd_users.db   ###修改权限
  • 在httpd站点中写入相关内容用于共享给client,更改站点权限
echo “1111> /var/www/html/111.html
echo “2222> /var/www/html/222.html
chmod 777 /var/www/html
  • 关闭防火墙,启动rsync服务
systemctl stop firewalld
rsync --daemon                   ###启动服务,如果要停止这个服务kill $(cat /var/run/rsyncd.pid)
netstat -anpt |grep rsync                   ##检查873端口是否开启
tcp        0      0 192.168.5.129:873       0.0.0.0:*               LISTEN      90024/rsync 

5.2、客户端client配置

  • 创建abc文件夹用于接收rsync中的文件,
yum -y install rsync  
mkdir /opt/abc  
systemctl stop firewalld         
  • 更改abc文件夹权限
chmod 777 /opt/abc/
  • 添加免交互
vi /etc/server.pass
pwd123
chmod 600 /etc/server.pass             ##修改文件权限
  • 下载监控软件inotify-tools并配置
yum install gcc gcc-c++ -y             ##安装环境依赖

tar xzvf inotify-tools-3.14.tar.gz -C /opt    ###解压

cd inotify-tools-3.14/

./configure                   ###编译并安装

make && make install
  • 修改inotify参数
vi /etc/sysctl.conf
fs.inotify.max_queued_events = 32768             ###监控队列大小
fs.inotify.max_user_instances = 1024             ###最多监控实例数
fs.inotify.max_user_watches = 1048576          ###每个实例最多监控文件数

sysctl -p  ####重新加载
  • 编写shell脚本执行同步操作
vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ aaa@qq.com::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
#       echo "${FILE} was rsynced" >>/opt/inotify_rsync.log

    fi
done
  • 修改脚本权限
chmod +x /opt/inotify.sh 

六、验证

  • 在client上执行远程同步,获取rsync共享模块[wwwroot]中的文件到abc文件夹中
rsync -az --delete --password-file=/etc/server.pass aaa@qq.com192.168.5.129::wwwroot /opt/abc

rsync+inotify实时同步配置

  • 开启客户端inotify监控,并执行 /opt/inotify.sh 脚本
inotifywait -mrq -e modify,create,move,delete  /opt/abc   ##开启对abc文件夹的监控

cd /opt                                 ##执行shell脚本
./inotify.sh                 

  • 重新开一个client终端,在/opt/abc中写入相关文件
vi /opt/abc/333.html
333
  • 能够发现inotify-tools是实时监控我们对/opt/abc文件夹的操作

rsync+inotify实时同步配置

  • 进入rsync服务器中,发现通过shell脚本已经将client中abc下的文件同步到rsync服务器中

rsync+inotify实时同步配置

相关标签: 远程同步