rsync和inotify是什麼我這裏就不在介紹了,有專門的文章介紹這兩個工具。git
一、兩臺服務器IP地址分別爲:github
源服務器:192.168.1.2web
目標服務器:192.168.1.3shell
@todo:從源服務器(192.168.1.2)的/www/目錄下的全部的文件實時同步到目標服務器(192.168.1.3)的/www_bak/目錄下vim
源服務器下須要安裝rsync和inotify,源服務器作爲server端,實時的向目標服務器client端發送數據centos
二、安裝 rsync安全
通常centos6.5下都已經安裝了rsync,因此就沒必要安裝了,能夠用如下命令檢查一下是否已安裝:bash
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已安裝完畢
三、建立同步文件所須要的密碼文件,這樣作是爲了安全
touch /etc/rsyncd.secrets
echo 'newpassword' > /etc/rsyncd.secrets
注:這裏的newpassword能夠是任意字符
出於安全考慮要把此文件的權限改爲600:
chmod 600 /etc/rsyncd.secrets
四、安裝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
五、建立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
到此爲止,源服務器的全部操做就完成了。下面配置目標服務器。
一、目標服務器也要安裝 rsync,安裝方式跟源服務器同樣,這裏就不在贅述了。
二、創建密碼文件:
touch /etc/rsyncd.secrets
echo "webuser:newpassword" > /etc/rsyncd.secrets
一樣要給此文件一個600的權限
chmod 600 /etc/rsyncd.secrets
注:在源服務器創建的密碼文件,只有密碼,沒有用戶名;而在目標服務器裏創建的密碼文件,用戶名與密碼都有。
三、寫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
四、目標服務器啓動 rsync
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
五、源服務器啓動同步:
/usr/bin/rsync.sh &
到這裏,全部的都已完成。能夠到源服務器下的/www目錄下建一個文件,而後再看一下目標服務器下的/www_bak/下是否有?