天天看点

rsync+inotify文件实时同步

安装环境:

server:192.168.2.183

 client:192.168.2.222

两台服务器上分别安装:

<code>yum </code><code>install</code> <code>rsync</code> <code>-y</code>

sever端配置rsync文件vi /etc/rsyncd.conf 默认配置文件不存在自己创建,以下为配置

<code> </code><code>uid = nobody</code>

<code>gid = nobody</code>

<code>port = 873</code>

<code>host all = 192.168.2.222</code>

<code>use chroot = on</code>

<code>max connections = 4</code>

<code>timeout = </code><code>yes</code>

<code>[web]</code>

<code>path = </code><code>/var/www/html/</code>

<code>comment = </code><code>rsync</code> <code>files</code>

<code>ignore errors</code>

<code>read</code> <code>only = no</code>

<code>list = </code><code>yes</code>

<code>auth </code><code>users</code> <code>= </code><code>rsync</code>

<code>secrets </code><code>file</code> <code>= </code><code>/etc/rsync_server</code><code>.</code><code>passwd</code>

<code>~</code>

创建密码通信文件vi /etc/rsync_server.passwd 并给与600权限

<code>[root@localhost ~]</code><code># cat  /etc/rsync_server.passwd   </code>

<code>rsync</code><code>:</code><code>rsync</code> 

<code>chmod</code> <code>600 </code><code>/etc/rsync_server</code><code>.</code><code>passwd</code>

启动rsync

<code>rsync</code> <code>--daemon</code>

查看监听端口

<code>[root@localhost ~]</code><code># netstat -ntulp | grep rsync</code>

<code>tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      20404</code><code>/rsync</code>         

<code>tcp        0      0 :::873                      :::*                        LISTEN      20404</code><code>/rsync</code>

rsync配置完毕

client端配置

实现实时同步需要安装inotify文件检查工具

下载安装

<code>wget http:</code><code>//github</code><code>.com</code><code>/downloads/rvoicilas/inotify-tools/inotify-tools-3</code><code>.14.</code><code>tar</code><code>.gz</code>

<code>  </code><code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/inotify</code> 

<code>  </code> 

<code>  </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

编写脚本inotify.sh然后后端执行,脚本内容如下:

<code>#!/bin/bash</code>

<code>host=192.168.2.183</code>

<code>src=</code><code>/data/soft/</code>

<code>dst=web</code>

<code>user=</code><code>rsync</code>

<code>inotifywait=</code><code>/usr/local/inotify/bin/inotifywait</code>

<code>rsync</code><code>=</code><code>/usr/bin/rsync</code>

<code>$inotifywait -mrq --timefmt </code><code>'%d/%m/%y %H:%M'</code> <code>--</code><code>format</code> <code>'%T %w %f'</code> <code>-e modify,delete,create,attrib $src |</code>

<code> </code><code>while</code> <code>read</code> <code>file</code> <code>DATE TIME DIR;</code>

<code>do</code>

<code>$</code><code>rsync</code> <code>-vzrtopg --delete --progress  $src $user@$host::$dst --password-</code><code>file</code><code>=</code><code>/etc/rsync_client</code><code>.</code><code>passwd</code>

<code>echo</code> <code>"${files} was rsynced"</code> <code>&gt;&gt; </code><code>/var/log/rsync</code><code>.log 2&gt;&amp;1</code>

<code>done</code>

 客户端创建rsync同步密码文件rsync_client.passwd  并给与600权限

<code>[root@node2 ~]</code><code># cat /etc/rsync_client.passwd  </code>

<code>rsync</code> 

<code>chmod</code> <code>600  </code><code>/etc/rsync_client</code><code>.</code><code>passwd</code>  

<code>rsync</code>

然后

后台运行inotify.sh脚本

<code>nohup</code> <code>sh inotify.sh &amp;</code>

<code>[root@node2 ~]</code><code># jobs</code>

<code>[1]+  Running                 </code><code>nohup</code> <code>sh inotify.sh &amp;</code>

<code>fg</code><code>是调用后台运行的程序的,</code>

 然后测试客户端将文件推送到服务端:

在客户端/data/soft/下创建删除文件,服务端的/var/www/html/目录下也会实时同步,/html/目录要有写的权限

<code> </code><code>&lt;br data-filtered=</code><code>"filtered"</code><code>&gt;</code>

本文转自 Anonymous123 51CTO博客,原文链接:http://blog.51cto.com/woshitieren/1690555