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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rsync基本操作加实时同步演练相关的知识,希望对你有一定的参考价值。

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

第二、用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 [email protected]::wwwroot/
./
有密码交互,可以设置去除:
export RSYNC_PASSWORD=abc123 (永久生效则写入/etc/ profile中)
技术分享图片
图1
下载成功
测试客户机上传文件:
思路:首先注意服务器端目录本身以及程序的权限
技术分享图片
只读限制要改为no
文件位置目录属性:
技术分享图片
确认权限没问题后执行本地文件上传操作:
rsync -avz /bin/b* [email protected]::wwwroot
技术分享图片
图2
上传成功

--delete的使用
思路:源主机/var/www/html 下有B开头文件:图2
客户机/srv下有A开头文件:图1
执行下面命令后客户机上A开头文件被删除
rsync -avzH --delete [email protected]::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/ [email protected]:/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 [email protected]
注意增加脚本的执行权限
执行脚本,开始监控:sh /opt/inotify_rsync.sh &

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

技术分享图片

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

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

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

以上是关于Rsync基本操作加实时同步演练的主要内容,如果未能解决你的问题,请参考以下文章

rsync远程同步(定期同步,实时同步实战!)

rsync同步操作,inotify实时同步,Cobbler平台装机

rsync同步操作 发布rsync共享 inotify实时同步 Split分离解析

rsync同步操作 发布rsync共享 inotify实时同步 Split分离解析

rsync远程同步(定期同步实时同步)

Rsync+inotify实时同步