Inotify+Rsync实现Linux服务器文件同步

做这个功能的时候遇到了好多坑,在此感谢一下这篇博客

http://kerry.blog.51cto.com/172631/734087/  ,大家参照这篇博客就能实现该功能。

另外如果想详细了解一下的话可以参考这几篇博客:

http://nolinux.blog.51cto.com/4824967/1431426

http://nolinux.blog.51cto.com/4824967/1431742

http://nolinux.blog.51cto.com/4824967/1431811

主要是要实现源服务器中的对应目录文件同步到目标服务器中的对应目录,文件有变化时也需要同步。

服务器版本是Linux内核基本都可以,但是内核版本最好高于2.6.13,因为Linux内核从2.6.13起,加入了对inotify的支持,我们需要使用Inotify实现文件同步监控功能。这边测试用的是CentOS-7 + 。

源服务器上需要安装inotify和rsync服务(inotify功能Linux核心集成,rsync功能一般发行版系统也都有集成,所以我们一般只需要安装一个inotify-tools工具方便inofity功能的调用),还需要提供一个脚本用于启动inotify服务,另外还有一个密码文件(该密码文件中只有一个密码,不需要用户名)。

目标服务器需要安装rsync服务,还需提供一个/etc/rsyncd.conf配置文件,启动同步服务的时候需要指定该配置文件,另外还需要一个认证密码文件(该密码文件中有一个用户名密码键值对,例如 root:123456)。

注意事项

这里记录下碰到的坑,防止以后重复踩到:

1、首先是编写脚本文件的时候因为是在windows下编写的,之后上传到linux的,所以编码有问题,执行报错。

vi xxxx   进入文本编辑器后

set ff?   查看文本格式是dos还是unix

set ff=unix    设置文本格式为unix

2、服务器上的密码文件权限一定要进行设置,不然会读取的时候会报权限错误

chmod 600 xxxx  xxxx为文件完整地址

3、启动inotify服务的时候如果报找不到库的错误,需要在启动前指定一下

设置连接库地址

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

启动监控服务

inotifywait -mrq -e create,modify,delete /home/dept12/sums/

参考地址:http://blog.csdn.net/wangxin6722513/article/details/44218893

4、目标服务器启动同步服务的时候需要提供一个/etc/rsyncd.conf文件,还有一个密码文件,密码文件需要设置权限

目标服务器启动同步服务,需要指定配置文件

rsync --daemon --config=/etc/rsyncd.conf

5、相关防火墙需要开放873端口,同一台服务器进出的防火墙都需要开放

iptables -L 查看防火墙状态

Linux系统关闭防火墙可参考:

http://blog.csdn.net/wang1144/article/details/7804404

windows中虚拟机Linux系统关闭防火墙参考:

http://blog.csdn.net/hsl_1990_08_15/article/details/50441058

6、各种rsync错误提示参考地址:

http://blog.chinaunix.net/uid-13954085-id-158637.html

用到的命令

ifconfig    查看当前服务器ip

rsync + 回车 查看Ubuntu系统是否安装了rsync,出现帮助信息说明已经安装

rpm -qa|grep rsync 查看CentOS系统是否安装了rsync

ps -ef|grep rsync 查看同步服务是否启动

posted @ 2017-10-24 10:32  一线大码  Views(207)  Comments(0Edit  收藏  举报