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

监控端已有反馈 查看目标主机是否同步 发现已顺利同步!

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