rsync同步操作inotify软件监控目录内容变化


rsync同步操作

? 命令用法
– rsync [选项...] 源目录 目标目录

? 同步与复制的差异
– 复制:完全拷贝源到目标
– 同步:增量拷贝,只传输变化过的数据

? rsync操作选项
– -n:测试同步过程,不做实际修改
– --delete:删除目标文件夹内多余的文档
– -a:归档模式,相当于-rlptgoD
– -v:显示详细操作信息
– -z:传输过程中启用压缩/解压

]# rsync -a /boot /todir //同步整个文件夹
]# rsync -a /boot/ /todir/ //只同步目录下的数据

[root@svr7 /]# mkdir /dir
[root@svr7 /]# mkdir /abc
[root@svr7 /]# cp /etc/passwd /etc/fstab /etc/hosts /dir/
[root@svr7 /]# ls /dir/
[root@svr7 /]# ls /abc/
[root@svr7 /]# rsync -av /dir /abc #同步目录本身
[root@svr7 /]# ls /abc/
[root@svr7 /]# rsync -av /dir/ /abc #同步目录下内容
[root@svr7 /]# ls /abc/
[root@svr7 /]# touch /dir/1.txt
[root@svr7 /]# ls /dir/
[root@svr7 /]# rsync -av /dir/ /abc/
[root@svr7 /]# ls /abc/
[root@svr7 /]# echo haha > /dir/passwd
[root@svr7 /]# rsync -av /dir/ /abc/
[root@svr7 /]# cat /abc/passwd

[root@svr7 /]# rsync -av --delete /dir/ /abc/
[root@svr7 /]# ls /dir
[root@svr7 /]# ls /abc

[root@svr7 /]# touch /abc/a.txt
[root@svr7 /]# ls /abc
[root@svr7 /]# rsync -av --delete /dir/ /abc/
[root@svr7 /]# ls /dir
[root@svr7 /]# ls /abc

[root@svr7 /]# touch /abc/{1..5}.txt
[root@svr7 /]# ls /abc
[root@svr7 /]# rsync -av --delete /dir/ /abc/
[root@svr7 /]# ls /dir
[root@svr7 /]# ls /abc
###############################################
远程同步rsync+SSH同步

? 与远程的 SSH目录保持同步
– 下行:rsync [...] user@host:远程目录 本地目录
– 上行:rsync [...] 本地目录 user@host:远程目录

虚拟机A:
]# ls /dir/
]# rsync -va --delete /dir/ root@192.168.4.207:/opt/

虚拟机B:
]# ls /opt
#################################################
实时同步

一、生成公钥与私钥,完成ssh无密码验证
1.生成公钥与私钥
[root@svr7 /]# ssh-keygen #一路回车
[root@svr7 /]# ls /root/.ssh
id_rsa id_rsa.pub known_hosts
[root@svr7 /]#
2.将公钥传递给对方
[root@svr7 /]# ssh-copy-id root@192.168.4.207

3.测试
]# touch /dir/2.txt
]# rsync -va --delete /dir/ root@192.168.4.207:/opt/

二、inotify软件监控目录内容变化

? 基本用法
– inotifywait [选项] 目标文件夹

? 常用命令选项
– -m,持续监控(捕获一个事件后不退出)
– -r,递归监控、包括子目录及文件
– -q,减少屏幕输出信息
– -e,指定监视的 modify、move、create、delete、
attrib 等事件类别

]# /myrpm/bin/inotifywait -mqr /dir/

]# rsync -va --delete /dir/ root@192.168.4.207:/opt/

循环:处理重复性的操作

for循环:适合有一定次数的循环操作
while适合死循环:次数无限

while [条件]    
 do
     重复性的操作
 done

[root@svr7 /]# vim /root/rsync.sh

!/bin/bash

a="/dir/"
b="rsync -a --delete $a root@192.168.4.207:/opt/"
while /myrpm/bin/inotifywait -rqq $a
do
$b
done

[root@svr7 /]# chmod +x /root/rsync.sh
[root@svr7 /]# /root/rsync.sh

相关