rsync+inotify配置
下載rsync源碼:http://rsync.samba.org
安裝rsync
#tar zxvf rsync-3.1.2.tar.gz #cd rsync-3.1.2 #./configure #make && make install
rsync有四種應用模式
shell模式(本地模式)
遠程shell模式(利用ssh)
查詢模式(列表模式)
服務器模式
#rsync SRC DST
例:
本地模式:
#rsync -av /root /tmp 複製/root目錄及其文件到/tmp下 #rsync -av /root/ /tmp 複製/root目錄下的文件到/tmp下 -a --archive 歸檔模式 -v --verbose 輸出詳細模式信息
遠程模式:
#rsync -av /root 192.168.0.99:/tmp
列表模式:
#rsync -a 192.168.0.99:/tmp 查看遠程主機上的/tmp目錄下的內容
rsync服務器端配置文件/etc/rsyncd.conf(需手動創建)包含全局參數和模塊參數
uid = nobody #當該模塊傳輸文件時守護進程的用戶ID,默認nobody gid = nobody #當該模塊傳輸文件時守護進程的用戶組ID,默認nobody use chroot = no max connections = 10 #指定模塊最大併發連接數,默認爲0,沒有限制 strict modes = yes #是否檢查口令文件權限,yes時密碼文件必須是root用戶權限 pid file = /var/run/rsyncd.pid #rsync守護進程的PID文件路徑 lock file = /var/lock/rsyncd.lock #指定支持max connections的鎖文件,默認是/var/run/rsyncd.conf log file = /var/log/rsyncd.log #rsync日誌文件路徑 [data] #定義模塊名稱 path = /data #需要備份的文件 comment = test rsync #說明 ignore errors #忽略一些無關的I/O錯誤 read only = no #yes爲只讀,no表示可以上傳文件 write only = no #yes表示不能下載,no表示可以下載 hosts allow = * #允許連接的主機 hosts deny =192.168.0.103 #禁止連接的主機 list = false #設定用戶請求可用的模塊列表時,該模塊是否被列出,默認ture(列出) uid = root # gid = root # auth user =backup #定義可連接模塊的用戶名,多個用逗號隔開。與系統用戶無關 secrets file = /etc/rsync/server.pass #存儲auth user定義的用戶密碼文件路徑。格式“用戶:密碼”
server.pass文件
backup:123456
修改文件權限
#chmod 600 /etc/rsync/server.pass
客戶端也要保存該文件但只保存密碼
/etc/rsync/server.pass
123456
在服務器端開啓服務
#/usr/local/bin/rsync --daemon
在客戶端執行
#/usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exclude "debug*" [email protected]::data /data --password-file=/etc/rsync/server.pass
在-vzrtopg中
v --verbose 詳細輸出模式
z --compress 在傳輸對文對文件進行壓縮處理
r --recursi 對子目錄以遞歸模式處理
t --times 保持文件時間信息
o --owner 保持文件屬主信息
p --perms 保持文件權限
g --group 保持文件屬組信息
--delete 指定以rsync服務器端爲基準進行數據鏡像同步
--progress 顯示同步過程
--exclude 用於排除不需要傳輸的文件類型
[email protected]::data 表示使用backup用戶對192.168.0.99的data模塊備份
/data 備份文件保存的目錄
--password-file=/etc/rsync/server.pass 客戶機上存放密碼的文件
inotify可以監控文件系統中的添加、刪除、修改、移動等操作,觸發rsync來備份
下載inotify-tools:http://inotify-tools.sourceforge.net/
安裝inotify-tools
#tar zxvf inotify-tools-3.14.tar.gz #cd inotify-tools-3.14 #./configure #make && make install
在/usr/local/bin下有兩個命令inotifywait和inotifywatch
inotifywait用於等待文件或文件集上的一個特定事件,可以監控任何文件和目錄,也可遞歸監控整個目錄樹
inotifywatch用於收集被監控的文件系統統計數據,包括inotify事件發生多少次等信息
inotifywait的常用參數
-m --monitor 表示保持事件始終監聽
-r --recursive 表示遞歸查詢目錄
-q --quiet 表示打印出監控事件
-c --event 指定要監控的事件(modify,delete,create,attrib等)
編寫腳本來監控文件變化並完成同步
inotifyrsync.sh腳本
#!/bin/bash # HOST1=192.168.0.96 SRC=/data DST1=data user1=backup /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $SRC \ | while read file do /usr/local/bin/rsync -vzrtopg --delete --progress --password-file=/etc/r sync/server.pass $SRC $user1@$HOST1::$DST1 &> /dev/null done