Centos7 下 配置 rsync 以及 rsync+inotify 實時同步

Centos 7 下 配置 Rsync 以及 rsync+inotify 實時同步

rsync介紹

rsync是一個開源的快速備份工具,可以在不同主機之間鏡像同步整個目錄樹,支
持增量備份,保持鏈接和權限,且採用優化的同步算法,在傳輸前執行壓縮,因此非
常適用於異地備份、鏡像服務器等應用。

rsync的官方站點是http://rsync.samba.org/,由 Wayne Davison進行維護。作爲一
種最常用的文件備份工具,rsync往往是 Linux和UNIX系統默認安裝的基本組件之一

rsync 源服務器 配置

rpm -q rsync 可以查看系統自帶了rsync服務

vim /etc/rsyncd.com
 uid = nobody     
 gid = nobody
 use chroot = yes    ##禁錮在源目錄
 address = 192.168.x.x     ##監聽地址
 port 873     ##監聽端口
 log file = /var/log/rsyncd.log   ##日誌文件位置
 pid file = /var/run/rsyncd.pid    ##進程ID位置
 hosts allow = 192.168.x.0/24    允許訪問的客戶機地址

 [wwwroot]      ##共享模塊名稱
 path = /var/www/html     ##源目錄的實際路徑
 comment = www.abc.cn
 read only = yes     ##是否爲只讀
 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2     ##同步時不再壓縮的文件類型
 auth users = backuper    ##授權賬戶
 secrets file = /etc/rsyncd_users.db   ##存放賬戶信息的數據文件

 vim /etc/rsyncd_users.db
  backuper:abc123     ##格式爲   賬戶名:密碼
  chmod 600 /etc/rsyncd_users.db    ##因爲賬戶信息明文存放,調整文件權限避免賬號信息泄露

  rsync --daemon    ##啓動rsync服務
  netstat -ntap |grep rsync
  rsync以873端口開啓

  rsync 源服務器就配置完成了

使用rsync 備份工具

在發起端 有兩種方式可以訪問rsync同步源,並下載到本地 /opt 目錄下進行備份

格式一:
rsync -avz [email protected]::wwwroot /opt/   

格式二:
rsync -avz rsync://[email protected]/wwwroot /opt/

這兩種方法都需要進行交互 輸入密碼後即可進行備份。

爲了在同步過程中不需要輸入密碼,需要創建一個密碼文件。
vim /etc/server.pass
abc123

rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt
## 免交互進行備份

配置 rsync + inotify 實時同步

工作原理

Linux內核從2.6.13版本開始提供了 inotify通知接口,用來監控文件系統的各種
變化情況,如文件存取、刪除、移動、修改等。利用這一機制,可以非常方便地實現
文件異動告警、增量備份,並針對目錄或文件的變化及時作出響應。

將rsync工具與inotify機制相結合,可以實現觸發式備份(實時同步)—只要
原始位置的文檔發生變化,就立即啓動增量備份操作,否則處於靜默
等待狀態。這樣,就避免了按固定週期備份時存在的延遲性、週期過密等問題。

實驗過程


調整inotify內核參數
vim /etc/sysctl.conf

fs.inotify.max_queued_events = 16384   ##監控事件隊列
fs.inotify.max_user_instances = 1024    ##最多監控實例數
fs.inotify.max_user_watches = 1048576    ##每個實例最多監控文件數

tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14

./configure

make && make install

inotifywait -mrq -e modify,create,move,delete /var/www/html/
## -m表示持續監控  -r 表示遞歸整個目錄  -q 表示簡化輸出信息  -e 用來指定要監控哪些事件

此時在 /var/www/html 下的操作會被同步監控並顯示

接下來編寫觸發時同步腳本

vim inotify.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]::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done

chmod +x inotify.sh

此腳本用來檢測本機 /var/www/html 的變動情況,一旦有更新觸發 rsync同步操作,上傳備份至 192.168.x.x 的 /var/www/html 目錄下
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章