
每个理性的IT人士都关注了吴柯的运维笔记!

Rsync(remote sync)
是UNIX及类UNIX平台一款数据镜像备份软件,它不像FTP等其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。
• 文件同步与复制的差异
– 复制:完全拷贝源到目标
– 同步:增量拷贝,只传输变化过的数据
rsync同步操作
命令用法
– rsync [选项...] 源目录 目标目录
• rsync操作选项
– -n:测试同步过程,不做实际修改
– --delete:删除目标文件夹内多余的文档
– -a:归档模式,相当于-rlptgoD
– -v:显示详细操作信息
– -z:传输过程中启用压缩/解压
[root@svr7 ~]# yum -y install rsync
[root@svr7 ~]# mkdir /dir1
[root@svr7 ~]# mkdir /test1
[root@svr7 ~]# cp -r /boot/* /dir1
[root@svr7 ~]# rsync -avz --delete /dir1/ /test1/
[root@svr7 ~]# cp /etc/passwd /dir1
[root@svr7 ~]# rsync -avz --delete /dir1/ /test1/
[root@svr7 ~]# cp /etc/shadow /test1
[root@svr7 ~]# rsync -avz --delete /dir1/ /test1/
rsync+SSH远程同步
用法及服务端要求
• 列出 SSH 服务端资源
– rsync user@host :远程 目录/
• 与远程的 SSH目录保持同步
– 下行:rsync [...] user@host:远程目录 本地目录
– 上行:rsync [...] 本地目录 user@host:远程目录
虚拟机A:
# rsync -avz --delete /opt/ root@192.168.5.5:/opt/
# cp /etc/fstab /opt/test01.txt
# rsync -avz --delete /opt/ root@192.168.5.15:/opt/
虚拟机B:
# ls /opt
✎Rsync+Inotify自动同步(实时同步)
由于使用Rsync仅能满足对数据实时性不高的环境,为了实现多台主机之间的实时同步,就需要结合Inotify(inode notify)工具。
栗子:实现镜像Web(使web服务器所提供的网站数据保持一致)
1.虚拟机A:搭建Web服务器,并在/var/www/html/写入index.html
虚拟机B:搭建Web服务器,并在/var/www/html/写入index.html
2.实时同步:虚拟机A的/var/www/html/与虚拟机B的/var/www/html/
方案:
1.实现源码包安装,在真机上,上传inotify-tools-3.13.tar.gz
# scp /var/ftp/share/inotify-tools-3.13.tar.gz root@192.168.5.5:/root/
2.安装gcc、make
[root@svr7 ~]# yum -y install gcc make
[root@svr7 ~]# rpm -q gcc
[root@svr7 ~]# rpm -q make
3:tar解包,释放源代码至指定目录
# tar -xf /root/inotify-tools-3.13.tar.gz -C /opt
# ls /opt/
4: ./configure 配置
指定安装目录/功能模块等选项,检测系统是否安装gcc
[root@svr7 ~]# cd /opt/inotify-tools-3.13
[root@svr7 inotify-tools-3.13]# ./configure
5: make 编译,生成可执行的二进制程序文件
6: make install 安装,将编译好的文件复制到安装目录
[root@svr7 /]# umount /var/www/html/rhel7/
[root@svr7 /]# ls /var/www/html/rhel7/
Inotifywait
基本用法
– inotifywait [选项] 目标文件夹
• 常用命令选项
– -m,持续监控(捕获一个事件后不退出)
– -r,递归监控、包括子目录及文件
– -q,减少屏幕输出信息
– -e,指定监视的 modify、move、create、delete、
attrib 等事件类别
while [条件测试]
do
执行命令
done
----<利用while循环反复检查单次监控结果>
7.在虚拟机A上生成公私钥
[root@svr7 /]# ssh-keygen
[root@svr7 /]# ssh-copy-id root@192.168.5.15
8.书写同步脚本
[root@svr7 /]# vim /opt/rsync.sh
#!/bin/bash
while inotifywait -rqq /var/www/html/
do
rsync -az --delete /var/www/html/ root@192.168.5.15:/var/www/html
done
[root@svr7 /]# chmod +x /opt/rsync.sh
[root@svr7 /]# /opt/rsync.sh
这样便实现了客户主机将数据推送到Rsync服务器,实现数据的实时同步功能。这样修改了192.168.5.5主机上的数据,就可以将数据推送至web服务器,192.168.5.15主机的数据会相应的发生改变。
推荐阅读:

吴柯的运维笔记
BY WUKEYY18S
长按二维码关注我们吧




