Remote Sync, 远程同步
1,rsync 命令用法
格式: rsync [选项..] 源目录 目标目录
区别: 同步与复制的差异
复制: 完全拷贝源到目标
同步: 增量拷贝, 只传输变化过的数据
2, 本地同步
rsync [选项..] 本地目录 1 本地目录 2 #把目录 1 同步到目录 2 下
rsync [选项..] 本地目录 1/ 本地目录 2 #把目录 1 下的数据同步到目录 2 下
-a : 归档模式, 相当于 - rlptgoD
-v : 显示详细信息
-z : 传输过程中启用压缩 / 解压
-n : 测试同步过程, 不做实际修改 #与 - avz 连用
--delete : 删除目标文件夹内多余的文档 #与 - avz 连用
3, 远程同步
rsync+SSH
-- 命令
rsync user@host: 远程目录 / #列出 SSH 服务端资源
rsync [选项..] user@host: 远程目录 本地目录 #下行 (下载) 不常用
rsync [选项..] 本地目录 user@host: 远程目录 #上行 (上传) 常用
-a : 归档模式, 相当于 - rlptgoD
-v : 显示详细信息
-z : 传输过程中启用压缩 / 解压
-n : 测试同步过程, 不做实际修改 #与 - avz 连用
--delete : 删除目标文件夹内多余的文档 #与 - avz 连用
提示: 同步目录时在目录后加 /, 表示同步目录里的数据; 同步目录不加 /, 表示同步此目录.
4, 实现实时同步
1) 部署公钥, 私钥, 实现 SSH 无密码验证
- [root@svr7 /]# SSH-keygen #虚拟机 A 生成公钥, 私钥 一路回车
- [root@svr7 /]# ls /root/.SSH #公钥, 私钥生成的位置
- id_rsa id_rsa.pub known_hosts
- [root@svr7 /]# SSH-copy-id root@192.168.4.207 #传递公钥到目标主机 (入虚拟机 B)
- [root@pc207 ~]# ls /root/.SSH #查看上传到虚拟机 B 的公钥
- authorized_keys #上传到客户机的公钥文件
2)inotify 实时同步
-- 源码安装 inotify-tools 工具, 实现监控目录内容的变化
- [root@svr7 /]# mkdir /myrpm
- [root@svr7 /]# tar -xf /tools/inotify-tools-3.13.tar.gz -C /myrpm #减压
- [root@svr7 /]# yum -y install gcc make #安装编译环境 gcc make
- [root@svr7 /]# cd /myrpm/inotify-tools-3.13/
- [root@svr7 inotify-tools-3.13]# ./configure #生成 Makefile 文件
- [root@svr7 inotify-tools-3.13]# make #编译成二进制文件
- [root@svr7 inotify-tools-3.13]# make install #安装
- [root@svr7 inotify-tools-3.13]# which inotifywait #查看命令位置
- /usr/local/bin/inotifywait
--inotifywait 基本用法
inotifywait [选项] 目标文件夹
-m : 持续监控 (捕获一个事件后不退出)
-r : 递归监控, 包括子目录及文件
-q : 减少屏幕输出信息
-qq: 无屏幕输出信息
-e : 指定监控的 modify move create delete attrib 等事件类别
3) 书写 shell 脚本
-- 利用 while 循环来实现反复检查单次监控
语法:
while [ 条件 ]
do
循环执行
done
-- 实现
#VIM /jluocc/rsync.sh
- #/bin/bash
- while inotifywait -rqq /opt
- do
- rsync -az --delete /opt/ root@192.168.4.207:/opt #同步本地 opt 目录下的数据到另一台主机的 / opt 目录下
- done
#chmod +x /jluocc/rysnc.sh #给脚本执行权限
#/jluocc/rsync.sh #运行脚本达到实时数据同步
4) 实现开机运行数据同步脚本
- #VIM /etc/rc.local #打开系统开机默认运行文件
- /jluocc/rsync.sh #在文件里写入刚才写的脚本的绝对路径
- #chmod +x /etc/rc.local #rc.local 默认没有执行权限, 需要赋予执行权限
5, 总结
rsync: 实现数据同步
inotifywait: 实现监控指定目录下的数据变化, 发生变化返回相应结果
shell 脚本: 实现 inotifywait 实时监控, 一旦数据变化, 将实现 rsync 数据同步, 达到数据的实时同步
来源: http://www.bubuko.com/infodetail-2832274.html