码迷,mamicode.com
首页 > 其他好文 > 详细

rsync+inotify实现文件实时同步-步骤详解

时间:2018-03-27 18:55:08      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:rsync inotify

实验拓扑(centos7下):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
3.配置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
技术分享图片

rsync+inotify实现文件实时同步-步骤详解

标签:rsync inotify

原文地址:http://blog.51cto.com/12385631/2091738

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!