rsync+inotify实时备份

1、rsync及inotify概述

1.rsync概述

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync能够远程同步,支持本地复制,或者与其余SSH、rsync主机同步。html

2.inotify概述

inotify 是一个 Linux特性,它监控文件系统操做,好比读取、写入和建立。Inotify 反应灵敏,用法很是简单,而且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。
案例环境以下:linux

角色 IP地址 安装软件包
rsync同步源 192.168.174.141 rsync、
rsync发起端 192.168.174.165 rsync、inotify-tools

2、配置rsync源服务器

1.创建/etc/rsyncd.conf配置文件

vim /etc/rsyncd.conf
 uid = nobody
    gid = nobody
    use chroot = yes                                  //是否禁锢在源目录,yes为是
    address = 192.168.174.141                //监听地址
    port 873                                                   //监听端口
    log file = /var/log/rsyncd.log                    //日志文件路径
    pid file = /var/run/rsyncd.pid                    //进程ID文件路径
    hosts allow = 192.168.174.0/24            //容许访问的客户机的地址段

    [wwwroot]                                              //共享模块名称    
    path = /var/www/html                           //源目录的实际地址
    comment = www.kgc.cn                 
    read only = no                                 //是否为只读    
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2      //同步时 再也不压缩的文件类型
    auth users = backuper                           //受权帐户
    secrets file = /etc/rsyncd_users.db       //存放帐户信息的数据文件

2.为备份帐户建立数据文件

vim /etc/rsyncd_users.db
 backuper:abc123    //backuper为用户名 abc123为密码
chmod 600 /etc/rsyncd_users.db  //更改备份帐户的读取权限,提升安全性
mkdir -p /var/www/html      
chmod 777 /var/www/html    //更改源目录的读写权限
chown -R nobody:nobody /var/www/html  //更改源目录的所属主及所属组

3.开启服务,运行参数为 --deamon ;若需关闭服务,可采起kill进程的方式,如kill $(cat /var/run/rsync.pid)

rsync --daemon
netstat -natp | grep rsync
tcp        0      0 192.168.174.141:873     0.0.0.0:*               LISTEN      4875/rsync

3、配置rsync发起端

将对方源目录的文件同步到发起端的/opt目录下,方法有三种:c++

(1)rsync -avz 备份用户名@同步源IP地址::共享模块名 /发起端目录 password:备份用户密码vim

rsync -avz backuper@192.168.174.141::wwwroot /opt/  
password:abc123

(2) rsync -avz rsync://备份用户名@共享模块名 /发起端目录 password:备份密码安全

rsync -avz rsync://backuper@192.168.174.141/wwwroot /opt/
password:abc123

(3)免密码交互bash

vim /etc/server.pass  //建立server.pass文件备份用户保存密码
abc123
chmod 600 /etc/server.pass  //更改密码文件读取权限,提升安全性
rsync -az --delete --password-file=/etc/server.pass backuper@192.168.174.141::wwwroot /opt

测试是否同步
在同步源服务器上的共享目录下建立aaa.html
rsync+inotify实时备份
rsync+inotify实时备份服务器

4、发起端配置inotify实时同步

1.调整inotify内核参数

vim /etc/sysctl.conf //在后面加入以下参数
    fs.inotify.max_queued_events = 16384    监控事件队列(16384)
    fs.inotify.max_user_instances = 1024    最多监控实例数(1024)
    fs.inotify.max_user_watches = 1048576   每一个实例最多监控文件数(1048576)

2.安装编译inotify-tools

yum install gcc gcc-c++ make -y
cd /opt/inofiry-tools-3.14
./configure
make && make install

3.监控事件

从新开启一个终端并发

inotifywait -mrq -e modify,create,move,delete /var/www/html

在/var/www/html目录下建立一个a.txt文件,切换终端查看命令输出的状况
rsync+inotify实时备份tcp

rsync+inotify实时备份

4.建立触发式同步脚本

用来检测本机/var/www/html目录的变更状况,一旦有更新触发rsync同步操做,则上传至服务器192.168.174.141的/var/www/htmlide

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.174.141::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done

5.测试

在发起端/var/www/html目录下建立test.txt文件
rsync+inotify实时备份
切换到同步源服务器下/var/www/html下查看
rsync+inotify实时备份
将发起端的test.txt文件删除
rsync+inotify实时备份
切换到同步源服务器,此时源服务器下的test.txt文件也被删除,说明同步成功。
rsync+inotify实时备份

相关文章
相关标签/搜索