rsync+inotify部署

rsync分为上行同步和下行同步      发起端和同步源的

上行同步:发起端同步数据到同步源

下行同步:发起端从同步源下载数据到发起端

发起端:管理员操作的机器就是发起端,也可以理解为客户端

同步源:数据存放的服务器叫做同步源

下行同步:

如果最下化安装的系统可能没有装rsync,使用yum安装即可:yum -y install rsync

在同步源服务器设置

修改rsync的配置文件:添加同步源服务器数据存放的路径等等相关配置,和Samba配置差不多,都是模块化设置。

rsync+inotify部署

 本次设置为匿名同步,可不用设置用户。

启动rsync

rsync+inotify部署

 为了测试效果创建测试文件

rsync+inotify部署

在发起端设置:

rsync+inotify部署

命令解释:rsync -avzH --delete 192.168.100.11::test /opt

-a   归档模式  保留文件的权限,属性等信息 相当于组合选项“-rlptgoD”

-v    显示同步过程的详细信息

-z     在传输文件的过程中压缩

-H    保留硬链接文件

--delete   删除目标位置有而原始位置没有的文件

192.168.100.11::test    同步源的ip和同步数据的逻辑名

/opt      保存在本地的路径

上行同步:

同步源不需要动,在发起端操作

为了方便测试  把opt下的test文件删除然后touch新的文件上行同步观察效果

rsync+inotify部署

在执行的过程中出现了error,提示的很明显,因为模块是只读的  没有权限上传,

解决方法:修改同步源的配置文件read only = no  默认是yes  然后从新启动rsync服务

rsync+inotify部署

 再次执行上行同步

rsync+inotify部署

这种情况是什么原因呢:

因为我们执行上传的命令是没有权限,但是刚刚我们修改了权限啊。。。。

rsync的程序用户默认是nobody  而我们创建的test目录是root身份创建的,其他人没有写入权。。。。

解决方法:一,修改为程序用户为root(不推荐)

                 二,给test目录提权

rsync+inotify部署

rsync+inotify实现实时同步

在发起端安装inotify-tools工具

  yum -y install inotify-tools

编写实时同步脚本

[[email protected] ~]# cat inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /opt"
RSYNC_CMD="rsync -avzH --delete /opt/ 192.168.100.11::test"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
   $RSYNC_CMD
done
然后把脚本后台执行,在发起端对opt目录进行删除或者添加修改操作,观察同步源/test目录的变化