centos7分布式文件服务rsync+inotify实时同步完全没问题!

实验拓扑:192.168.80.181 服务器端(主机名www.aa.com)

                 192.168.80.182 客户端(主机名www.ab.com)

1、使用SSH源:安装rsync,服务端和客户端同时安装,只使用客户端命令就OK了。

systemctl stop firewalld

setenforce 0

yum install -y rsync

---以上三句在服务器端和客户端都要执行---------

rsync -avz root@192.168.80.181:/tmp/ /opt/       //在客户端执行,把服务器端tmp目录的内容同步到客户端opt目录下

rsync -rlvz /opt/ root@192.168.80.181:/tmp/        //在客户端执行,把客户端本机的opt目录同步给181主机的tmp目录

同步前181主机:

同步后181主机:

//如果避免交互的话需要配置公钥验证。以下两句实现在182主机上产生公钥与私钥,把本机公钥传给181主机,这样下次在182主机上使用同步命令时不需要输入181主机密码,即避免交互。

//如果要实现在181主机上使用同步命令时不需要输入182主机密码,只需把IP地址修改为182

[www.ab.com@ ~]# ssh-keygen -t rsa       //跳出语句一直enter就行

[www.ab.com@ ~]# ssh-copy-id root@192.168.80.181 

-----------------------------在客户端验证同步测试-------------------------

181 /var/www/html 下有A开头文件,客户机/tmp下有B开头文件,执行下面命令后客户机上B开头文件应该被删除:

[www.ab.com@ ~]# rsync -avz --delete root@192.168.80.181:/var/www/html/ /tmp/    //--delete的作用



2. 使用RSYNC作为源:需要配置RSYNC服务端程序

-------新建并配置rsync源服务器使其可以被同步(读取或写入)------

vi /etc/rsyncd.conf

uid = nobody                                           //运行用户

gid = nobody                                           //运行用户组

use chroot = yes                                        //禁锢在源目录

address = 192.168.80.181                               //监听地址

port 873                                               //监听端口

log file = /var/log/rsyncd.log                           //日志文件位置

pid file = /var/run/rsyncd.pid                           //存放进程ID的文件位置

hosts allow = 192.168.80.0/24                          //允许访问的客户端地址

[wwwroot]                                            //共享模块名称

    path = /var/www/html                            //源目录实际路径

    comment = Document Root of www.benet.com    //说明

    read only = yes                                  //是否为只读

    dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z     //同步时不再压缩的文件类型

    auth users = backuper                           //授权账户

secrets file = /etc/rsyncd_users.db                //存放账户信息的数据文件

:wq

----建立虚拟用户配置文件并设置恰当的权限-----

[www.aa.com@ ~]# vi /etc/rsyncd_users.db

backuper:123123        //无需建立同名系统账户,这里是虚拟用户

:wq

[www.aa.com@ ~]# chmod 600 /etc/rsyncd_users.db   //由于账号明文存放,因此要调整文件权限,避免账号信息泄露

//备份用户backuper需要对源目录/var/www/html/有相应读取权限,实际上,只要other组有读取权限,授权用户backuper和运行用户nobody也就有读取权限了。

如果目录不存在就新建一个

----启动、关闭rsync程序---

[www.aa.com@ ~]# rsync --daemon

[www.aa.com@ ~]# netstat -anpt | grep rsync

关闭rsync程序:

[www.aa.com@ ~]# killall -3 rsync    //没有killall命令就执行yum install psmisc -y安装


再次启动:


如果出现上述错误,只需rm -rf /var/run/rsyncd.pid,之后再去启动就可以了。

------------在客户端测试同步情况------

[www.ab.com@ ~]# rsync -avz backuper@192.168.80.181::wwwroot/ /tmp/     //把服务器上源目录的文件下载到本地tmp目录下



[www.ab.com@ ~]# rsync -avz /bin/b* backuper@192.168.80.181::wwwroot     //把本地的文件上传到服务器(注意服务器端目录本身以及程序的权限)


出现上述错误,是因为服务器端rsync的配置文件中read only是只读,没有写入权限,且目录本身没有赋予other写入的权限

[www.aa.com@ ~]# chown nobody /var/www/html/

[www.aa.com@ ~]# vi /etc/rsyncd.conf     //修改read only的值为no


此时无需重启服务,再次执行同步命令:



----使客户端使用rsync备份时不需要密码交互----

[www.ab.com@ ~]# export RSYNC_PASSWORD=123123   //临时生效,关机后失效

//以下配置永久生效

[www.ab.com@ ~]# vi /etc/profile

export RSYNC_PASSWORD=123123     添加到最后一行下

[www.ab.com@ ~]# source /etc/profile

2. 配置rsync+inotify实时同步

----编译安装inotify(被备份主机上做)----

[www.aa.com@ ~]# tar xf inotify-tools-3.14.tar.gz -C /opt

[www.aa.com@ ~]# cd /opt/inotify-tools-3.14/

[www.aa.com@ ~]# ./configure      

[www.aa.com@ ~]# make && make install

-------配合inotify触发备份、调整内核参数(在被备份主机181上改)----

[www.aa.com@ ~]# vi /etc/sysctl.d/te.conf

fs.inotify.max_queued_events = 16384      //监控队列大小

fs.inotify.max_user_instances = 1024       //最多监控实例数

fs.inotify.max_user_watches = 1048576    //每个实例最多监控文件数

:wq

[www.aa.com@ ~]# sysctl -p             //初始化

-----测试监控效果------

[www.aa.com@ ~]# inotifywait -mrq -e modify,create,move,delete /opt/test/     //m(持续监控)r(递规整个目录)q(简化输入信息) -e指定监控的事件:向被监控的目录写入或者其它操作时会有输出。


---通过角本完成触发备份任务,这里只要/opt//test/目录下有新建修改移除删除等动作时,会完全备份到/var/www/html/目录下-----

[www.aa.com@ ~]# vi /opt/inotify_rsync.sh

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /opt/test/"

RSYNC_CMD="rsync -azH --delete /opt/test/ backuper@192.168.80.181::wwwroot"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE

do

    if [ $(pgrep rsync | wc -l) -le 5 ] ; then

        $RSYNC_CMD

    fi

done

:wq

 

[www.aa.com@ ~]# sh /opt/inotify_rsync.sh &

-----测试查看------

[www.aa.com@ ~]# rm -rf /opt/test/t2





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值