架构师的成长之路初片~rsync+inotify实时监控及同步
Rsync同步(数据同步)
同步操作
命令用法
--rsync [选项] 源目录 目标目录
同步与复制的差异
--复制:完全拷贝源到目标
--同步:增量拷贝,只传输变化过的数据
rsync操作选项 | |
-n | 测试同步过程,不做实际修改 |
-delete | 删除目标文件夹内多余的文档 |
-a | 归档模式,相当于-rlptgoD(D:保留设备文件及其他特殊文件 -o -g :保留文件的属主、数组标记 -p -t :保留文件的权限、时间标记 -l: 保留符号链接文件 -r : 递归,包括目录、子目录及所有文件) |
-v | 显示详细操作信息 |
-z | 传输过程中启用压缩、解压 |
rsync+ssh同步
与远程的ssh目录保持同步
rsync [...] user@host:远程目录 本地目录
rsync [...] 本地目录 user@host:远程目录
服务端要求
开启ssh(22端口)服务,并提供授权的用户、密码
例子:
rsync -av /mydir /todir //同步目录本身 rsync -av /mydir/ /todir //同步目录内容
例子:
同步a目录到b目录,且从b删除a目录没有的文件
用rsync命令报错集
原因:目标主机没有rsync命令
解决方案:在目标主机下载rsync命令即可
inotify-tools工具
下载地址:http://download.sf.net/inotify-tools/
标准的源码、编译安装即可
tar -xf inotify-...gz
cd inno..
./config --prefix=/opt
make && make install
inotifywait监控:
用循环解决实时监控
while 条件
do
重复执行的事情
done
例子:
实时监控,且同步目录
前提:要做秘钥
vim /etc/rsync.sh
while /opt/myrpm/bin/inotifywait -rqq /mydir do rsync -a --delete /mydir/ root@192.168.2.22:/opt/ done
chmod +x /etc/rsync.sh //给一个执行权限
/etc/rsync.sh & //把此脚本放入后台执行
如果在执行 成功,检测的时候失败。(解决方案)
把上面的每条命令在终端输入一次,如若成功。则复制粘贴此命令到脚本内
(有些时候,手写脚本在没有进行测试的时候。会有空格或者路径上的一些错误。导致脚本执行失败或者传输文件失败)