• 命令用法
rsync [选项…] 源目录 目标目录
同步与复制的差异
复制:完全拷贝源到目标
同步:增量拷贝,只传输变化过的数据
• rsync操作选项
-n:测试同步过程,不做实际修改
—delete:删除目标文件夹内多余的文档
-a:归档模式,相当于-rlptgoD
-v:显示详细操作信息
-z:传输过程中启用压缩/解压

本地同步

[root@svr7 ~]# rsync -av /mydir /todir #同步目录本身
[root@svr7 ~]# rsync -av /mydir/ /todir #同步目录内容
[root@svr7 ~]# rsync -av —delete /mydir/ /todir/ #同步并且删除目标目录多余的文件

远程同步

• 与远程的 SSH目录保持同步
下行:rsync […] user@host:远程目录 本地目录
上行:rsync […] 本地目录 user@host:远程目录
虚拟机A的/mydir目录的内容与虚拟机B的/opt进行同步
虚拟机A:
]# rsync -av —delete /mydir/ root@192.168.4.207:/opt
……..connecting (yes/no)? yes
root@192.168.4.207’s password: #输入密码

实时数据同步

虚拟机A的/mydir/目录的内容与虚拟机B的/opt进行同步

一、安装inotifywait监控软件

#yum -y install inotify-tools
#which inotifywait
• 基本用法
inotifywait [选项] 目标文件夹
• 常用命令选项
-m,持续监控(捕获一个事件后不退出)
-r,递归监控、包括子目录及文件
-q,减少屏幕输出信息
-e,指定监视的 modify、move、create、delete、attrib 等事件类别

二、实现ssh无密码验证(公钥与私钥)

虚拟机A
1.生成公钥与私钥
[root@svr7 ~]# ssh-keygen #一路回车
[root@svr7 ~]# ls /root/.ssh/
id_rsa(私钥) id_rsa.pub(公钥) known_hosts(记录曾经远程管理过的机器)
2.将虚拟机A的公钥传递给虚拟机B
]# ssh-copy-id root@192.168.4.207
]# rsync -av —delete /mydir/ root@192.168.4.207:/opt

三、书写shell脚本

[root@svr7 /]# vim /etc/rsync.sh
while /usr/bin/inotifywait -rqq /mydir/
do
rsync -a —delete /mydir/ root@192.168.4.207:/opt
done
[root@svr7 /]# chmod +x /etc/rsync.sh #赋予执行权限
[root@svr7 /]# /etc/rsync.sh & #放入后台运行脚本程序