Centos 6.5 rsync+inotify 兩台服務器文件實時同步


rsync和inotify是什么我這里就不在介紹了,有專門的文章介紹這兩個工具。

 

1、兩台服務器IP地址分別為:

源服務器:192.168.1.2

目標服務器:192.168.1.3

@todo:從源服務器(192.168.1.2)的/www/目錄下的所有的文件實時同步到目標服務器(192.168.1.3)的/www_bak/目錄下

源服務器下需要安裝rsync和inotify,源服務器做為server端,實時的向目標服務器client端發送數據

 

2、安裝 rsync

一般centos6.5下都已經安裝了rsync,所以就不必安裝了,可以用以下命令檢查一下是否已安裝:

rpm -qa |grep rsync

上圖顯示了我的機器上安裝的是rsync-3.0.6-12。

如果沒有安裝請往下看,如果已安裝,那就跳過下面的部分:

cd /usr/local/src

wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz

tar zxvf rsync-3.0.9.tar.gz

cd rsync-3.0.9

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

make

make install

rsync已安裝完畢

3、創建同步文件所需要的密碼文件,這樣做是為了安全

touch /etc/rsyncd.secrets

echo 'newpassword' > /etc/rsyncd.secrets

注:這里的newpassword可以是任意字符

出於安全考慮要把此文件的權限改成600:

chmod 600 /etc/rsyncd.secrets

4、安裝inotify

先查看服務器是否支持inotify

ll /proc/sys/fs/inotify

會有三個文件,這說明此服務器是支持 inotify的。

下面安裝inotify:

wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify
make
make install

5、創建rsync復制腳本,用戶shell來實現,其功能就是:從源服務器(192.168.1.2)的/www/目錄下的所有的文件無論是添加、修改、刪除文件,能夠通過inotify監控到,並通過rsync實時同步到目標服務器(192.168.1.3)的/www_bak/目錄下

vim /usr/bin/rsync.sh

#!/bin/bash
host=192.168.1.3
src=/www/
des=web
user=webuser
/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
do
/usr/bin/rsync -zrtopg --delete --progress --password-file=/etc/rsyncd.secrets $src $user@$host::$des
echo "${files} was rsynced" > /var/log/rsyncd.log 2>&1
done

其中host是目標服務器的ip,src是源服務器要同步的目錄,des是認證模塊名,需要與目標服務器一致,user是建立密碼文件里的認證用戶。

修改rsync.sh的權限

chmod +x /usr/bin/rsync.sh

到此為止,源服務器的所有操作就完成了。下面配置目標服務器。

 

1、目標服務器也要安裝 rsync,安裝方式跟源服務器一樣,這里就不在贅述了。

2、建立密碼文件:

touch /etc/rsyncd.secrets

echo "webuser:newpassword" > /etc/rsyncd.secrets

同樣要給此文件一個600的權限

chmod 600 /etc/rsyncd.secrets

注:在源服務器建立的密碼文件,只有密碼,沒有用戶名;而在目標服務器里建立的密碼文件,用戶名與密碼都有。

3、寫rsync的配置文件:

vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#log format = %t %a %m %f %b # 日志記錄格式
[web]
path = /www_bak/
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.2
hosts deny = *
list = false
uid = root
gid = root
auth users = webuser
secrets file = /etc/rsyncd.secrets

4、目標服務器啟動 rsync

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

5、源服務器啟動同步:

/usr/bin/rsync.sh &

到這里,所有的都已完成。可以到源服務器下的/www目錄下建一個文件,然后再看一下目標服務器下的/www_bak/下是否有?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM