rsync+inotify同步邏輯圖
節點說明
主機名 | 主機IP地址 |
---|---|
inotify-master | 10.1.1.1 |
inotify-slave | 10.1.1.2 |
inotify-slave部署
1 安裝rsync
yum -y install rsync
2 編輯/etc/rsyncd.conf
#設置服務器信息提示文件名稱,在該文件中編寫提示信息
#
motd file = /etc/rsyncd.motd
#開啓rsync數據傳輸日誌功能
transfer logging = yes
#設置日誌文件名稱,可以通過log format參數設置日誌格式
log file = /var/log/rsyncd.log
#設置rsync進程號
pid file = /var/run/rsyncd.pid
#設置鎖文件名稱
lock file = /var/run/rsync.lock
設置服務器監聽的端口號,默認是873
port = 873
#設置服務器所監聽網卡接口的IP地址,
address=10.1.1.2
#設置進行數據傳輸時使用的賬號名稱或ID,默認使用nobody
uid = nobody
#設置進行數據傳輸時所使用的組名或GID,默認使用nobody
gid = nobody
use chroot = no
#是否允許客戶端上傳數據,這裏設置爲只讀
read only = no
#設置併發連接數,0代表無限制。超出併發數後,如果依然有客戶端連接請求,則將會收到稍後重試的提示消息
max connections = 10
#模塊,rsync通過模塊定義同步的目錄,模塊以【name】的形式定義,這與samba定義共享目錄是一樣的效果。在rsync中也可以定義多個模塊
#同步目錄的真實路徑通過path指定
path=/var/www/html/
#忽略一些io錯誤
ignore errors
#exclude 可以指定例外的目錄,即將web1目錄下的某個目錄設置爲不同步數據。
#exclude = /test
#設置允許連接服務器的賬戶,賬戶可以是系統中不存在的用戶
auth users=web1user
#設置密碼驗證文件名稱,注意該文件的權限要求爲只讀,建議權限600,僅在設置auth users參數後有效
secrets file = /etc/rsyncd.secrets
#設置允許那些主機可以同步數據,可以是單個IP,也可以是網段,多個IP與網段之間使用空格分隔
hosts allow = 10.1.1.1/255.255.255.0
#設置拒絕所有(除hosts allow定義的主機外)
hosts deny=*
#客戶端請求顯示模塊列表,本模塊名稱是否顯示,默認爲true
list = false
3 配置寫入目錄權限
chmod -R 777 /var/www/html
4 創建賬戶
echo "web1user:gcks@pass">/etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
5 設置歡迎詞
echo "welcome to access ">/etc/rsyncd.motd
6 以服務形式啓動rsync
rsync --daemon
7 設置開機啓動
echo "/usr/bin/rsync --daemon">>/etc/rc.local
8 開放873端口
iptables -I INPUT -p tcp --dport 873 -j ACCEPT
service iptables save
inotify-master部署
1 安裝rsync
yum -y install rsync
2 安裝編譯工具
yum -y install make gcc gcc-c++
3 安裝inotify
wget http://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.tar.gz
./configure --prefix=/usr/local/inotify
make && make install
4 添加密碼文件(#注意:這裏只要寫密碼即可,切記。)
echo "gcks@pass">/etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
5 編寫監控腳本inotify_rsync.sh
#!/bin/bash
host1=10.1.1.2
# 本地目錄
src=/storage/radius
dst1=web1
user1=web1user
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify
${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib $src |while read lines
do
rsync -vzrtopg --delete --progress --password-file=${rsync_passfile} $src $user1@$host1::$dst1
echo "${files} was rsynced">>/tmp/rsync.log 2>&1
done
6 執行監控腳本inotify_rsync.sh
chmod 777 inotify_rsync.sh
./inotify_rsync.sh > /tmp/rsync.log 2 >&1 &