案例16:rsync基本用法
1)将目录 /boot 同步到目录 /todir 下
2)将目录 /boot 下的文档同步到目录 /todir 下
3)在目录 /boot 下新增文件 a.txt,删除 /todir 下的子目录 grub2,再次同步使 /todir 与 /boot 一致
1.将目录 /boot 同步到目录 /todir 下
[root@svr7 ~]# ls -l /todir //同步前
ls: 无法访问/todir: 没有那个文件或目录
[root@svr7 ~]# rsync -a /boot /todir //将目录1作为目录2的子目录
[root@svr7 ~]# ls -l /todir //检查同步结果
总用量 4
dr-xr-xr-x. 4 root root 4096 11月 30 18:50 boot
2.将目录 /boot 下的文档同步到目录 /todir 下
[root@svr7 ~]# rm -rf /todir //清理掉目录2
[root@svr7 ~]# rsync -a /boot/ /todir //将目录1下的文档同步到目录2下
[root@svr7 ~]# ls -l /todir //检查同步结果
总用量 126708
-rw-r–r–. 1 root root 126426 10月 30 2015 config-3.10.0-327.el7.x86_64
drwxr-xr-x. 2 root root 4096 11月 30 18:50 extlinux
drwx------. 6 root root 104 12月 9 09:58 grub2
… …
3.同步效果测试
在目录/boot下新增文件a.txt,删除/todir下的子目录 grub2:
[root@svr7 ~]# touch /boot/a.txt
[root@svr7 ~]# rm -rf /todir/grub2/
现在目录/boot和/todir目录下的内容已经不一致了:
[root@svr7 ~]# ls -ld /boot/a.txt /todir/a.txt
ls: 无法访问/todir/a.txt: 没有那个文件或目录
-rw-r–r–. 1 root root 0 1月 11 21:09 /boot/a.txt
[root@svr7 ~]# ls -ld /boot/grub2 /todir/grub2
ls: 无法访问/todir/grub2: 没有那个文件或目录
drwx------. 6 root root 104 12月 9 09:58 /boot/grub2
再次同步使/todir与/boot一致:
[root@svr7 ~]# rsync -a /boot/ /todir/
确认同步结果:
[root@svr7 ~]# ls -ld /boot/a.txt /todir/a.txt
-rw-r–r–. 1 root root 0 1月 11 21:09 /boot/a.txt
-rw-r–r–. 1 root root 0 1月 11 21:09 /todir/a.txt
[root@svr7 ~]# ls -ld /boot/grub2 /todir/grub2
drwx------. 6 root root 104 12月 9 09:58 /boot/grub2
drwx------. 6 root root 104 12月 9 09:58 /todir/grub2
案例17:rsync+SSH实时同步
1)实现本机/opt目录与远程主机/opt目录,使用inotifywait工具进行实时同步
实时同步
一、部署公钥 私钥,实现远程ssh无密码验证
虚拟机svr7:
1.生成公钥 私钥
[root@svr7 ~]# ssh-keygen #一路回车
[root@svr7 ~]# ls /root/.ssh/
id_rsa id_rsa.pub known_hosts
2.传递公钥 到虚拟机B
[root@svr7 ~]# ssh-copy-id root@192.168.4.207
3.虚拟机pc207:查看
[root@pc207 ~]# ls /root/.ssh/
authorized_keys
4.虚拟机svr7:测试无密码同步
[root@svr7 ~]# rsync --delete -avz /opt/ root@192.168.4.207:/opt/
二、虚拟机svr7 监控目录内容的变化
• Linux内核的 inotify 机制
– 提供事件响应式的文件系统通知机制
– 安装 inotify-tools 控制工具可调用此机制实现监控
1.真机传递tools.tar.gz到虚拟机svr7
[root@svr7 ~]# scp /root/桌面/tools.tar.gz root@192.168.4.7:/root
2.虚拟机A验证:
[root@svr7 ~]# ls /root/
tools.tar.gz
[root@svr7 ~]#
3.安装源码包
[root@svr7 ~]# mkdir /nsd
[root@svr7 ~]# tar -xf /root/tools.tar.gz -C /nsd
[root@svr7 ~]# tar -xf /nsd/tools/inotify-tools-3.13.tar.gz -C /root/
步骤1:安装gcc与make
[root@svr7 ~]# yum –y install gcc make
步骤2: ./configure 配置,指定安装目录/功能模块等选项
[root@svr7 ~]# cd /root/inotify-tools-3.13/
[root@svr7 ~] # ./configure
步骤4:make 编译,生成可执行的二进制程序文件
[root@svr7 ~]# make
步骤5:make install 安装,将编译好的文件复制到安装目录
[root@svr7 ~]# make install
[root@svr7 ~]# ls /usr/local/bin/inotifywait #验证程序产生
三、书写Shell脚本完成,实时同步
死循环: while
while [条件]
do
重复执行的代码
done
[root@svr7 /]# vim /root/rsync.sh
#!/bin/bash
while inotifywait -rqq /opt
do
rsync --delete -az /opt/ root@192.168.4.207:/opt/
done &
[root@svr7 /]#