多台服务器下同步文件夹数据(rsync+inotify)

网上有不少讲解rsync+inotify的教程,我就先贴出一个来你们去看吧,基本都是相似的。web

http://www.jb51.net/article/57011.htm数据库

我就强调几点,按照上面的方法配置完后基本上会出现 防火墙的错误,须要打开873端口号bash

命令,2种方式的命令:服务器

  1. iptables -A INPUT -p tcp --dport 873 -j ACCEPT   注意:没装firewall的请使用此命令
  2. firewall-cmd --zone=public --add-port=873/tcp --permanent 注意:装了firewall的请使用此命令,执行完这句后须要重启防火墙firewall-cmd --reload

须要特别注意的是若是是阿里云的服务器须要在公网入方向和公网出方向将873端口加进去。tcp

还有按照上面的配置铁定会出现一个错误,那就是服务端配置文件第7行出现的一个错误:测试

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib
$src \ | while read files 阿里云

看好了,这个是以前那位文章的做者故意写错的仍是咋地,$src \ | while read files将这句话里的 \ 给去掉就行了spa

上面是我本机服务端的配置文件,rsync.sh.net

顺便说一句,服务端的正确打开方式:3d

root@iZ2zed4mlmnhkespizriyiZ:/home/wwwroot# sh /home/wwwroot/rsync.sh &

查看是否启动成功:

root@iZ2zed4mlmnhkespizriyiZ:/home/wwwroot# ps -ef|grep rsync
root     15767 15443  0 15:57 pts/1    00:00:00 sh ./rsync.sh
root     15769 15767  0 15:57 pts/1    00:00:00 sh ./rsync.sh
root     15882 15443  0 16:41 pts/1    00:00:00 grep rsync

按照教程走,大致流程都不会错,其实配置也很简单,服务端该装的装完,配置文件配好,就开始作客户端的事情了,客户端更简单,只须要安装一个rsync便可

详细步骤能够参阅链接的文档,这里讲一下还会踩到的坑,记住客户端的密码文件必定要给600的权限,不然就会抛错:

@ERROR: auth failed on module XXX

http://blog.csdn.net/learnhard/article/details/5542765

 可参考此篇文章解决此错误。

客户端权限也须要看好  建议将服务端和客户端的auth users = webuser该成auth users = root

基本上注意上述我讲的几点,你就能够成功,最后发一下成果图吧

服务端:

客户端:

数据已同步,只要有新文件就能够同步过来。不过仍是有一些小瑕疵,按照以前博文教程上来说“主服务器里删除文件的时候,备份服务器里不跟着删除文件,我查看了不少英文文档,测试了不少遍,最后找到了一个解决方法,那就是在主服务器里,把rsync.sh这个脚本里第9行的--delete参数给去掉,就能够解决这个问题” 这句话纯属放屁,我已经将--delete去掉了 仍是无论用的,具体如何才能实现将备份数据库的文件删除,这个等我找到解决方案必定会贴出来的。

相关文章
相关标签/搜索