rsync+inotify实现文件时时单项同步
?源服務(wù)器??????????10.13.114.16
目標(biāo)服務(wù)器????????10.13.114.17
目的:實(shí)現(xiàn)源服務(wù)器10.13.114.16?/home/admin/www/文件夾文件實(shí)時(shí)同步到目標(biāo)服務(wù)器10.13.114.17?的/home/admin/www目錄下
第一步:源服務(wù)器端安裝rsync
wget?http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo?-O?/etc/yum.repos.d/CentOS-Base.repo
yum?-y?install?vim-enhanced
wget?http://www.samba.org/ftp/rsync/rsync-3.0.8.tar.gz
tar?-zxvf?rsync-3.0.8.tar.gz
cd?rsync-3.0.8
./configure?--prefix=/usr/local/rsync?--disable-ipv6
make?&&?make?install
cd?/usr/local/rsync/
mkdir?etc
mkdir?var
vim?/usr/local/rsync/etc/rsyncd.conf
1?log?file?=?/usr/local/rsync/var/rsyncd.Log?
2?pid?file?=?/usr/local/rsync/var/rsyncd.Pid?
3?lock?file?=?/usr/local/rsync/var/rsyncd.Lock?
4?#secrets?file?=?/usr/local/rsync/etc/rsyncd.Pas?
5?motd?file?=?/usr/local/rsync/etc/rsyncd.Motd?
6?hosts?allow?=?10.13.114.17/32?
7?list?=?yes?
8?uid?=?root?
9?gid?=?root?
10?use?chroot?=?no?
11?max?connections?=?30?
12?[www]?
13?path?=?/home/admin/www?
14?comment?=?bakup?www?
15?read?only?=?no?
16?auth?users?=?admin?
vim?/usr/local/rsync/etc/rsyncd.motd
?
17?welcome?
這是歡迎詞,可以不設(shè)置
在服務(wù)端和客戶端都創(chuàng)建admin用戶,用于同步
useradd?admin
在源端生成公鑰,拷貝到目標(biāo)段,實(shí)現(xiàn)免密碼登錄
ssh-keygen?-t?rsa
拷貝.ssh/id_rsa.pub到服務(wù)器端的.ssh/authorized_keys文件中
然后設(shè)置權(quán)限為
在目標(biāo)段執(zhí)行
#chmod?600?.ssh/authorized_keys
啟動(dòng)源的rsync服務(wù)
rsync?--daemon?--config=/usr/local/rsync/etc/rsyncd.conf
查看
ps?-ef?|grep?rsync
端口為873
第二步:源服務(wù)器端安裝inotify
wget?http://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz/download
tar?-zxvf?inotify-tools-3.13.tar.gz
cd?inotify-tools-3.13
./configure?--prefix=/usr/local/inotify
make?&&?make?install
cd?/usr/local/inotify/bin
18?#!/bin/sh?
19?SRC=/home/admin/www?
20?DST=admin@10.13.114.17:/home/admin?
21??
22?/usr/local/inotify/bin/inotifywait?-mrq?-e?modify,delete,create,attrib?${SRC}?|?while?read?status?
23?do?
24?????su?-?admin?-c?"/usr/bin/rsync??-ahqzt??--delete??$SRC?$DST"?
25?????echo?"`date?+'%Y-%m-%d?%H:%M:%S'`??${status}?has?rsynced"?>>rsync.log?
26?done?
啟動(dòng)monitor.sh
#chmod?+x?monitor.sh
#./monitor.sh?&
可以放到rc.local實(shí)現(xiàn)開機(jī)啟動(dòng)
cat?"/usr/local/inotify/bin/monitor.sh?&"?>>?/etc/rc.local
然后在源端的/home/admin/www下創(chuàng)建刪除文件,都會(huì)同步到目標(biāo)端
注釋:
/usr/local/bin/inotifywait?-mrq?-e?modify,delete,create,attrib?${src}
-m?是保持一直監(jiān)聽
-r?是遞歸查看目錄
-q?是打印出事件
-e?create,move,delete,modify,attrib?是指?“監(jiān)聽?創(chuàng)建?移動(dòng)?刪除?寫入?權(quán)限”?事件
/usr/bin/rsync?-ahqzt?--delete?$SRC?$DST
-a?存檔模式
-h?保存硬連接
-q?制止非錯(cuò)誤信息
-z?壓縮文件數(shù)據(jù)在傳輸
-t?維護(hù)修改時(shí)間
-delete?刪除于多余文件
rsync的完整參數(shù)說明:
-v,?--verbose?詳細(xì)模式輸出
-q,?--quiet?精簡(jiǎn)輸出模式
-c,?--checksum?打開校驗(yàn)開關(guān),強(qiáng)制對(duì)文件傳輸進(jìn)行校驗(yàn)
-a,?--archive?歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-r,?--recursive?對(duì)子目錄以遞歸模式處理
-R,?--relative?使用相對(duì)路徑信息
-b,?--backup?創(chuàng)建備份,也就是對(duì)于目的已經(jīng)存在有同樣的文件名時(shí),將老的文件重新命名為~filename。可以使用--suffix選項(xiàng)來指定不同的備份文件前綴。
--backup-dir?將備份文件(如~filename)存放在在目錄下。
-suffix=SUFFIX?定義備份文件前綴
-u,?--update?僅僅進(jìn)行更新,也就是跳過所有已經(jīng)存在于DST,并且文件時(shí)間晚于要備份的文件。(不覆蓋更新的文件)
-l,?--links?保留軟鏈結(jié)
-L,?--copy-links?想對(duì)待常規(guī)文件一樣處理軟鏈結(jié)
--copy-unsafe-links?僅僅拷貝指向SRC路徑目錄樹以外的鏈結(jié)
--safe-links?忽略指向SRC路徑目錄樹以外的鏈結(jié)
-H,?--hard-links?保留硬鏈結(jié)
-p,?--perms?保持文件權(quán)限
-o,?--owner?保持文件屬主信息
-g,?--group?保持文件屬組信息
-D,?--devices?保持設(shè)備文件信息
-t,?--times?保持文件時(shí)間信息
-S,?--sparse?對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間
-n,?--dry-run現(xiàn)實(shí)哪些文件將被傳輸
-W,?--whole-file?拷貝文件,不進(jìn)行增量檢測(cè)
-x,?--one-file-system?不要跨越文件系統(tǒng)邊界
-B,?--block-size=SIZE?檢驗(yàn)算法使用的塊尺寸,默認(rèn)是700字節(jié)
-e,?--rsh=COMMAND?指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步
--rsync-path=PATH?指定遠(yuǎn)程服務(wù)器上的rsync命令所在路徑信息
-C,?--cvs-exclude?使用和CVS一樣的方法自動(dòng)忽略文件,用來排除那些不希望傳輸?shù)奈募?/font>
--existing?僅僅更新那些已經(jīng)存在于DST的文件,而不備份那些新創(chuàng)建的文件
--delete?刪除那些DST中SRC沒有的文件
--delete-excluded?同樣刪除接收端那些被該選項(xiàng)指定排除的文件
--delete-after?傳輸結(jié)束以后再刪除
--ignore-errors?及時(shí)出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除
--max-delete=NUM?最多刪除NUM個(gè)文件
--partial?保留那些因故沒有完全傳輸?shù)奈募?#xff0c;以是加快隨后的再次傳輸
--force?強(qiáng)制刪除目錄,即使不為空
--numeric-ids?不將數(shù)字的用戶和組ID匹配為用戶名和組名
--timeout=TIME?IP超時(shí)時(shí)間,單位為秒
-I,?--ignore-times?不跳過那些有同樣的時(shí)間和長(zhǎng)度的文件
--size-only?當(dāng)決定是否要備份文件時(shí),僅僅察看文件大小而不考慮文件時(shí)間
--modify-window=NUM?決定文件是否時(shí)間相同時(shí)使用的時(shí)間戳窗口,默認(rèn)為0
-T?--temp-dir=DIR?在DIR中創(chuàng)建臨時(shí)文件
--compare-dest=DIR?同樣比較DIR中的文件來決定是否需要備份
-P?等同于?--partial
--progress?顯示備份過程
-z,?--compress?對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理
--exclude=PATTERN?指定排除不需要傳輸?shù)奈募J?/font>
--include=PATTERN?指定不排除而需要傳輸?shù)奈募J?/font>
--exclude-from=FILE?排除FILE中指定模式的文件
--include-from=FILE?不排除FILE指定模式匹配的文件
--version?打印版本信息
--address?綁定到特定的地址
--config=FILE?指定其他的配置文件,不使用默認(rèn)的rsyncd.conf文件
--port=PORT?指定其他的rsync服務(wù)端口
--blocking-io?對(duì)遠(yuǎn)程shell使用阻塞IO
-stats?給出某些文件的傳輸狀態(tài)
--progress?在傳輸時(shí)現(xiàn)實(shí)傳輸過程
--log-format=formAT?指定日志文件格式
--password-file=FILE?從FILE中得到密碼
--bwlimit=KBPS?限制I/O帶寬,KBytes?per?second
-h,?--help?顯示幫助信息
要排除同步某個(gè)目錄時(shí),為rsync添加--exculde=PATTERN參數(shù),注意,路徑是相對(duì)路徑,具體查看man?rsync。
要排除某個(gè)目錄的事件監(jiān)聽的處理時(shí),為inotifywait添加--exclude或--excludei參數(shù),具體查看man?inotifywait。
?
轉(zhuǎn)載于:https://blog.51cto.com/dbachina/781009
總結(jié)
以上是生活随笔為你收集整理的rsync+inotify实现文件时时单项同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring中关于aop拦截功能的记录
- 下一篇: ThinkPHP 框架培训资料