rsync+inotify實現數據同步

操做系統:rhel 5.7 html

首先下載好兩個工具: linux

rsync地址: http://rsync.samba.org/download.html c++

inotify-tools: http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz git

此次的實驗主要有兩臺機器,172.16.54.114172.16.54.115,咱們把115作爲源服務器,114作爲目標服務器 github

主要是把115/home/md中的全部數據實時同步到114上的/home/md 服務器

1,先關閉防火牆 工具

vi /etc/selinux/config #編輯防火牆配置文件 ui

#SELINUX=enforcing #註釋掉 spa

#SELINUXTYPE=targeted #註釋掉 操作系統

SELINUX=disabled #增長

:wq! #保存,退出

setenforce 0 #當即生效

 

2,查看端口是否被佔用(直接在命令行輸入)及安裝

netstat –apn | grep 873

 

安裝rsync,在兩臺服務器上都要進行這個步驟

首先將下載的包解壓

tar -xzvf  rsync-3.1.0.tar.gz

解壓後進入目錄

./configure --prefix=/usr/local/rsync

 

#說明安裝在/usr/local/rsync目錄中

在這一步以前要安裝相對就的gccgcc-c++

make

make install

安裝完畢

 

chkconfig rsync on #隨系統啓動

這個只在114上作

建立rsync配置文件rsync.conf

vi /etc/rsyncd.conf #建立配置文件,添加如下代碼

log file = /var/log/rsyncd.log #日誌文件位置,啓動rsync後自動產生這個文件,無需提早建立

pidfile = /var/run/rsyncd.pid  #pid文件的存放位置

lock file = /var/run/rsync.lock  #支持max connections參數的鎖文件

secrets file = /etc/rsync.pass  #用戶認證配置文件,裏面保存用戶名稱和密碼,後面會建立這個文件

motd file = /etc/rsyncd.Motd  #rsync啓動時歡迎信息頁面文件位置(文件內容自定義)

[md] #自定義名稱

path = /home/md/ #rsync服務端數據目錄路徑

comment = md #模塊名稱

uid = root #設置rsync運行權限爲root

gid = root #設置rsync運行權限爲root

port=873  #默認端口

use chroot = no #默認爲true,修改成no,增長對目錄文件軟鏈接的備份

read only = no  #設置rsync服務端文件爲讀寫權限

list = no #不顯示rsync服務端資源列表

max connections = 200 #最大鏈接數

timeout = 600  #設置超時時間

auth users = md #執行數據同步的用戶名,能夠設置多個,用英文狀態下逗號隔開

hosts allow = 172.16.54.114  #容許進行數據同步的客戶端IP地址,能夠設置多個,用英文狀態下逗號隔開

#hosts deny = 218.234.1.254 #禁止數據同步的客戶端IP地址,能夠設置多個,用英文狀態下逗號隔開(這個比較隨便,也能夠沒有)

:wq!  #保存,退出

 

建立用戶認證文件

vi /etc/rsync.scrt  #配置文件,添加如下內容

md:123456 #格式爲 用戶:密碼,若是是多個,能夠一行一個

:wq!  #保存,退出

chmod 600 /etc/rsyncd.conf  #設置文件全部者讀取、寫入權限

chmod 600 /etc/rsync.scrt  #設置文件全部者讀取、寫入權限

 

在此,咱們普及一個問題,咱們先進入/etc/xinetd.d文件中,能夠看到rsync這個文件,說明rsync是由xinetd管理,能夠經過xinetd來啓動rsync

/etc/init.d/xinetd start  #啓動

service xinetd stop   #中止

service xinetd restart #從新啓動

------------------------只在114上進行的到此爲止--------------------

 

如下只到115上進行

vi /etc/rsync.scrt  #編輯文件,添加如下內容

123456 #密碼

:wq! #保存退出

chmod 600 /etc/passwd.txt #設置文件權限,只設置文件全部者具備讀取、寫入權限便可

inotify-tools下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

 

上傳inotify-tools-3.14.tar.gz/usr/local/src目錄下

cd /usr/local/src

tar zxvf inotify-tools-3.14.tar.gz  #解壓

cd inotify-tools-3.14 #進入解壓目錄

./configure --prefix=/usr/local/inotify  #配置

make  #編譯

make install  #安裝

3、設置系統環境變量,添加軟鏈接

echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh

source /etc/profile.d/inotify.sh  #使設置當即生效

echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf

ln -s /usr/local/inotify/include  /usr/include/inotify

4、修改inotify默認參數(inotify默認內核參數值過小)

查看系統默認參數值

sysctl -a | grep max_queued_events

結果是:fs.inotify.max_queued_events = 16384

sysctl -a | grep max_user_watches

結果是:fs.inotify.max_user_watches = 8192

sysctl -a | grep max_user_instances

結果是:fs.inotify.max_user_instances = 128

修改參數:

sysctl -w fs.inotify.max_queued_events="99999999"

sysctl -w fs.inotify.max_user_watches="99999999"

sysctl -w fs.inotify.max_user_instances="65535"

參數說明:

max_queued_events

inotify隊列最大長度,若是值過小,會出現"** Event Queue Overflow **"錯誤,致使監控文件不許確

max_user_watches

要同步的文件包含多少目錄,能夠用:find /home/www.osyunwei.com -type d | wc -l 統計,必須保證max_user_watches值大於統計結果(這裏/home/www.osyunwei.com爲同步文件目錄)

max_user_instances

每一個用戶建立inotify實例最大值

 

5、建立腳本,實時觸發rsync進行同步

vi /usr/local/inotify/rsync.sh   #編輯,添加如下代碼

#!/bin/sh

srcdir=/home/md/

dstdir=buspos

rsyncuser=buspos

rsyncpassdir=/etc/rsync.scrt

dstip="172.16.54.114"

for ip in $dstip

do

rsync -avH --port=873 --progress --delete  $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir

done

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir |  while read file

do

for ip in $dstip

do

rsync -avH --port=873 --progress --delete  $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir

echo "  ${file} was rsynced" >> /tmp/rsync.log 2>&1

done

done

 

 

 

chmod +x /usr/local/inotify/rsync.sh   #添加腳本執行權限

 

6、設置腳本開機自動執行

vi /etc/rc.d/rc.local  #編輯,在最後添加一行

sh /usr/local/inotify/rsync.sh & #設置開機自動在後臺運行腳本

:wq!  #保存退出

啓動腳本

nohup  . /usr/local/inotify/rsync.sh &

 

關閉了窗口也沒事,已在後臺運行下次開機自動啓動

相關文章
相關標籤/搜索