天天看點

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