Rsync基本操作加实时同步演练
基本原理如图:
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/e771d5d88066f68d4354c42235ae37dc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
第一、 用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
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/74dfc99e156f7ae84e7960c0be233fbd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
测试源主机文件的下载与上传:
思路:源主机文件位置/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中)
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/0f69deac945f4e2f5904235a8cb5e067.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
图1
下载成功
测试客户机上传文件:
思路:首先注意服务器端目录本身以及程序的权限
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/8ca976d5f2585224ab7e5edd70cad454.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
只读限制要改为no
文件位置目录属性:
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/b86b798020450a1cbe769324f24b6905.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
确认权限没问题后执行本地文件上传操作:
rsync -avz /bin/b* backuper@192.168.80.184::wwwroot
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/ec49ab5c260ccd4b2195d50aeef4314d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
图2
上传成功
--delete的使用
思路:源主机/var/www/html 下有B开头文件:图2
客户机/srv下有A开头文件:图1
执行下面命令后客户机上A开头文件被删除
rsync -avzH --delete backuper@192.168.80.184::wwwroot /srv
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/c3a1706e73b50a1656c7273f69bf9085.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
A开头文件成功删除
实验:
配置Rsync+ inotify实时同步:
原理如图所示:
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/f27c3bc9cad963bf6b4124c0defb8f3e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
思路:源主机上(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
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/b3bcb1e934d87711581d57b4f465e119.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
监控部署完成
下面通过角本完成触发备份任务
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 &
下面进行实时同步测试:
清空所有主机文件夹里的内容,在源主机上新建、删除等操作,然后查看目标主机相应位置是否同步
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/799294aad755d829caca6407e8cf55df.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
脚本运行中……
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/7e9c7268672d9f037cca7459057f704b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
源主机已清空
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/1311c5663069d0260224771013ffa96b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
目标主机也是空的
在源主机上新建文件夹test123
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/c890b54fa40b5cb5d97ae92852598aa8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
监控端已有反馈
查看目标主机是否同步
![Rsync基本操作加实时同步演练](https://s1.51cto.com/images/blog/201803/27/56cd9e1a6a2206d14b14bde350234b53.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
发现已顺利同步!
有关其他操作自行实验,本次实时同步实验成功!