一、rsync 数据同步
同步与复制的差异:
复制:完全拷贝源文件到目标文件(cp scp(远程复制))
同步:增量拷贝,只传输变化过的数据
rsync的命令用法:
rsync [选项] 源目录 目标目录
rsync常用的操作选项:
-n:测试同步过程,不做实际修改
--delete: 删除目标文件内多余的文件
-a: 归档模式,表示以递归方式传输文件,并保持所有文件属性,相当于-rlptgoD
-v: 显示详细的操作信息
-z: 传输过程中启用压缩/解压
本地同步实例
# 在 / 下创建两个目录
[root@web1 ~]# mkdir /socdir /destdir
# 在socdir目录中存放两个文件
[root@web1 ~]# cp /etc/passwd /socdir/
[root@web1 ~]# touch /socdir/1.txt
[root@web1 ~]# ls /socdir/ # 查看 socdir 目录中有两个文件
1.txt passwd
# 同步目录到目标文件夹中 注意: /socdir 写法 和 /socdir/ 写法
[root@web1 ~]# rsync -av /socdir /destdir/ # 将整个源目录socdir都同步到目标目录destdir中
[root@web1 ~]# rsync -av /socdir/ /destdir/ # 将源目录中的文件同步到目标目录中
# --delete 参数,删除目标文件中多余的参数
[root@web1 ~]# touch /destdir/2.txt
[root@web1 ~]# touch /socdir/3.txt
[root@web1 ~]# rsync -av --delete /socdir/ /destdir/
3.远程同步实例
与远程的ssh目录保持同步
上行: rsync [.. ] 本地目录 user@host:远程目录
下行: rsync [....] user@host:远程目录 本地目录
# 虚拟机A中/socdir目录内容与虚拟机B中/test进行同步
# 虚拟机A中执行:
[root@web1 ~]# rsync -av --delete /socdir/ [email protected]:/test
[email protected]'s password:
# 虚拟机B中查看
[root@web2 ~]# ls /test
二、实时数据同步
rsync 和 inotify工具共同使用,当监控到源目录中的数据有变化时,立刻将其同步到目标目录中
环境:虚拟机A中/socdir目录内容与虚拟机B中/test进行同步
1.实现ssh无密码验证(公钥与私钥)
# 虚拟机A,生成公钥与私钥
[root@web1 ~]# ssh-keygen #一路回车
[root@web1 ~]# ls /root/.ssh/
id_rsa(私钥) id_rsa.pub(公钥) known_hosts(记录曾经远程管理过的机器)
2.虚拟机A上操作,将公钥传递给虚拟机B
web1]# ssh-copy-id [email protected]
web1]# rsync -av --delete /socdir/ [email protected]:/test
2.源码编译安装inotify
下载后安装源码包:解压缩
./configure配置
make编译
make install 安装
# 源码编译安装步骤
# 步骤一:安装开发工具
]# yum -y install make
]# yum -y install gcc
# 步骤二:进行tar解包
]# tar -xf /root/tools.tar.gz -C /usr/local/
]# ls /usr/local/
]# ls /usr/local/tools/
]# tar -xf /usr/local/tools/inotify-tools-3.13.tar.gz -C /usr/local/
]# ls /usr/local/
# 步骤三:运行configure脚本进行配置
# 作用1:检测系统是否安装gcc
# 作用2:可以指定安装位置及功能
]# cd /usr/local/inotify-tools-3.13/ # 要cd到源码所在目录
]# ./configure --prefix=/opt/myrpm #指定安装位置
# 步骤四:make进行编译,产生可以执行的程序
]# cd /usr/local/inotify-tools-3.13/
]# make
# 步骤五:make install进行安装
]# cd /usr/local/inotify-tools-3.13/
]# make install
]# ls /opt/myrpm/
]# ls /opt/myrpm/bin/ # 查看编译后的程序文件
基本用法
inotifywait [选项] 目标文件夹
常用命令:
-m: 持续监控,捕获一个事件后不退出
-r: 递归监控,包括子目录及文件
-q: 减少屏幕输出信息
-e: 指定监控的modify, move, create, delete,attrib等事件类别
4.书写一个shell脚本,监控一个目录的变化,有内容变化时,即进行同步数据
[root@svr7 /]# vim /etc/rsync.sh # 监控变化时同步
while /opt/myrpm/bin/inotifywait -rqe /mydir/
do
rsync -a --delete /mydir/ [email protected]:/opt
done
[root@svr7 /]# chmod +x /etc/rsync.sh #赋予执行权限
[root@svr7 /]# /etc/rsync.sh & #运行脚本程序
[root@svr7 /]# jobs -l
[1]+ 17707 运行中 /etc/rsync.sh &
[root@svr7 /]# kill 17707 #停止脚本
rsync 服务的配置文件解析
配置环境