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

Rsync基本操作加实时同步演练

时间:2018-03-27 15:26:33      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:rsync+inotify

Rsync基本操作加实时同步演练
第一、 用SSH源,就只安装使用客户端命令就OK了,相当于scp
例如:
rsync -avz root@192.168.80.181:/bin/* /opt/
rsync -rlvz /opt/ root@192.168.80.181:/tmp/
如果避免交互的话需要配置公钥验证。
ssh-keygen -t rsa
ssh-copy-id root@192.168.80.190

第二、用sync源,则需要对服务端源主机进行配置,新建并配置 rsync源服务器使其可以被同步
yum install -y rsync

vi /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.80.184
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.80.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.benet.com
read only = no
dont compress = .gz .bz2 .tgz .zip .rar .z
auth users = backuper
secrets file = /etc/rsyncd_users.db
建立虚拟用户配置文件并设置恰当的权限
vi /etc/rsyncd_users.db
backuper:abc123
chmod 600 /etc/rsyncd_users.db
启动程序:rsync --daemon
netstat -anpt | grep rsync
技术分享图片
测试源主机文件的下载与上传:
思路:源主机文件位置/var/www/html 共享名wwwroot
在文件夹html里存放实验数据:cp /bin/a /var/www/html
技术分享图片
客户端使用命令进行下载操作:
rsync -avz backuper@192.168.80.184::wwwroot/
./
有密码交互,可以设置去除:
export RSYNC_PASSWORD=abc123 (永久生效则写入/etc/ profile中)
技术分享图片
图1
下载成功
测试客户机上传文件:
思路:首先注意服务器端目录本身以及程序的权限
技术分享图片
只读限制要改为no
文件位置目录属性:
技术分享图片
确认权限没问题后执行本地文件上传操作:
rsync -avz /bin/b* backuper@192.168.80.184::wwwroot
技术分享图片
图2
上传成功

--delete的使用
思路:源主机/var/www/html 下有B开头文件:图2
客户机/srv下有A开头文件:图1
执行下面命令后客户机上A开头文件被删除
rsync -avzH --delete backuper@192.168.80.184::wwwroot /srv
技术分享图片
A开头文件成功删除

实验:
配置Rsync+ inotify实时同步:
思路:源主机上(92.168.80.184)安装inotify监控,若发生改变则将上行同步至目标主机(192.168.80.185)
编译安装inotify
tar xf inotify-tools-3.14.tar.gz -C /opt
cd /opt/inotify-tools-3.14/
./configure
make && make install
配合inotify触发备份、调整内核参数
vi /etc/sysctl.conf
fs.inotify.max_queued_events = 16384 //监控队列大小
fs.inotify.max_user_instances = 1024 //最多监控实例数
fs.inotify.max_user_watches = 1048576 //每个实例最多监控文件数
查看参数设置:sysctl –p
技术分享图片
监控部署完成
下面通过角本完成触发备份任务
vi /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait –mrq -e modify,create,attrib,move,delete /var/www/html"
RSYNC_CMD="rsync -azH --delete /var/www/html/ root@192.168.80.185:/srv"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 50 ] ; then
$RSYNC_CMD
fi
done

当源主机上行同步时将与目标主机进行密码交互,这是脚本不允许发生的
应将密码交互去除方可不影响脚本执行
ssh-keygen -t rsa //默认全部回车
ssh-copy-id root@192.168.80.15
注意增加脚本的执行权限
执行脚本,开始监控:sh /opt/inotify_rsync.sh &

下面进行实时同步测试:
清空所有主机文件夹里的内容,在源主机上新建、删除等操作,然后查看目标主机相应位置是否同步
技术分享图片
脚本运行中……

技术分享图片

源主机已清空
技术分享图片
目标主机也是空的
在源主机上新建文件夹test123技术分享图片
技术分享图片

监控端已有反馈
查看目标主机是否同步
技术分享图片
发现已顺利同步!

有关其他操作自行实验,本次实时同步实验成功!

Rsync基本操作加实时同步演练

标签:rsync+inotify

原文地址:http://blog.51cto.com/13490688/2091612

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