Rsync+Inotify遠程實時同步
rsync是linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地復制,或者與其他SSH、rsync主機同步。
官方網站:http://rsync.samba.org/
開始部署Rsync
1、在服務器A和服務器B上同時安裝rsync服務和Xinetd服務yum -install rsync
2、在服務器A上編輯/etc/rsyncd.conf配置文件(沒有這個文件的話可自行創建)
uid = nobody gid = nobody use chroot = yes address = 47.88.56.104 #本機地址 port 873 #監聽的端口 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid hosts allow = 118.25.48.231 #允許訪問的客戶機地址 [web] #項目名稱 path = /var/www/html #項目路徑 comment = Web Directory #項目描述 read only = yes #只讀 dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步時不再壓縮的文件 auth users = rsync #用戶認證信息 secrets file = /etc/rsync_users.db #用戶認證信息存放的路徑
3、在服務器A上創建用戶認證信息文件,格式:[賬號]:[密碼]
vim /etc/rsyncd_users.db
rsync:123456
:wq
4、在服務器A上啟動Rsync服務程序,修改/etc/xinetd.d/rsync文件
service rsync { disable = no #將原來的yes改為no flags = IPv4 #將原來的IPv6改為IPv4 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
service xinetd restart
5、在服務器B上測試同步(防火墻記得開放端口喲!!!)/usr/bin/rsync -vzrtopg --delete --exclude ".svn/" --password-file=/etc/rsync_users.pass [email protected]::web /var/www/html/
#-v, --verbose 詳細模式輸出
#-z, --compress 對備份的文件在傳輸時進行壓縮處理
#-r, --recursive 對子目錄以遞歸模式處理
#-t, --times 保持文件時間信息
#-o, --owner 保持文件屬主信息
#-p, --perms 保持文件權限#-g, --group 保持文件屬組信息
#--delete 刪除那些DST中SRC沒有的文件
#--exclude=PATTERN 指定排除不需要傳輸的文件模式
#--progress 在傳輸時現實傳輸過程
#--password-file=FILE 從FILE中得到密碼,這個文件必須是600權限,chmod 600 /etc/rsync_users.pass
6、將Rsync加入任務計劃中,每隔2分鐘同步一次crontab -e
定期同步的不足
1、執行備份的時間固定,延遲明顯、實時性差
2、當同步源長期不變化時,密集的定期任務是不必要的
實時同步的優點
1、一旦同步源出現變化,立即啟動備份
2、只要同步源無變化,則不執行備份
Inotify簡介
Inotify 是一個 Linux特性,從版本2.6.13開始提供,它監控文件系統操作,比如讀取、寫入和創建。Inotify 反應靈敏,用法非常簡單,並且比 cron 任務的繁忙輪詢高效得多。學習如何將 inotify 集成到您的應用程序中,並發現一組可用來進一步自動化系統治理的命令行工具。
開始配置Inotify
*註:在開始之前需要在服務器B上也安裝好Rsync並且開啟服務
1、在服務器A上調整inotify內核參數,vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
2、使調整inotify內核參數立刻生效sysctl -p
3、安裝Inotify-Tool工具yum install -y inotify-tools
4、打開兩個終端,一個終端執行創建刪除等操作,另一個執行Inotify-Tool工具,測試Inotify-Tool工具時候正常inotifywait -mrq -e modify,create,move,delete /var/www/html
inotifywait:用於持續監控,實時輸出結果
inotifywatch:用於短期監控,任務完成後再出結果
5、編寫觸發式腳本,vim /root/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ [email protected]:/var/www/html"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
6、添加開機自動後臺自動運行,編輯/etc/profile文件,在最後一行加入下面語句/bin/bash /root/inotify_rsync.sh &
End。。。。。。。。。
Rsync+Inotify遠程實時同步