rsync+inotify实现文件时时单项同步
?源服務器??????????10.13.114.16
目標服務器????????10.13.114.17
目的:實現源服務器10.13.114.16?/home/admin/www/文件夾文件實時同步到目標服務器10.13.114.17?的/home/admin/www目錄下
第一步:源服務器端安裝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?
這是歡迎詞,可以不設置
在服務端和客戶端都創建admin用戶,用于同步
useradd?admin
在源端生成公鑰,拷貝到目標段,實現免密碼登錄
ssh-keygen?-t?rsa
拷貝.ssh/id_rsa.pub到服務器端的.ssh/authorized_keys文件中
然后設置權限為
在目標段執行
#chmod?600?.ssh/authorized_keys
啟動源的rsync服務
rsync?--daemon?--config=/usr/local/rsync/etc/rsyncd.conf
查看
ps?-ef?|grep?rsync
端口為873
第二步:源服務器端安裝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?
啟動monitor.sh
#chmod?+x?monitor.sh
#./monitor.sh?&
可以放到rc.local實現開機啟動
cat?"/usr/local/inotify/bin/monitor.sh?&"?>>?/etc/rc.local
然后在源端的/home/admin/www下創建刪除文件,都會同步到目標端
注釋:
/usr/local/bin/inotifywait?-mrq?-e?modify,delete,create,attrib?${src}
-m?是保持一直監聽
-r?是遞歸查看目錄
-q?是打印出事件
-e?create,move,delete,modify,attrib?是指?“監聽?創建?移動?刪除?寫入?權限”?事件
/usr/bin/rsync?-ahqzt?--delete?$SRC?$DST
-a?存檔模式
-h?保存硬連接
-q?制止非錯誤信息
-z?壓縮文件數據在傳輸
-t?維護修改時間
-delete?刪除于多余文件
rsync的完整參數說明:
-v,?--verbose?詳細模式輸出
-q,?--quiet?精簡輸出模式
-c,?--checksum?打開校驗開關,強制對文件傳輸進行校驗
-a,?--archive?歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-r,?--recursive?對子目錄以遞歸模式處理
-R,?--relative?使用相對路徑信息
-b,?--backup?創建備份,也就是對于目的已經存在有同樣的文件名時,將老的文件重新命名為~filename。可以使用--suffix選項來指定不同的備份文件前綴。
--backup-dir?將備份文件(如~filename)存放在在目錄下。
-suffix=SUFFIX?定義備份文件前綴
-u,?--update?僅僅進行更新,也就是跳過所有已經存在于DST,并且文件時間晚于要備份的文件。(不覆蓋更新的文件)
-l,?--links?保留軟鏈結
-L,?--copy-links?想對待常規文件一樣處理軟鏈結
--copy-unsafe-links?僅僅拷貝指向SRC路徑目錄樹以外的鏈結
--safe-links?忽略指向SRC路徑目錄樹以外的鏈結
-H,?--hard-links?保留硬鏈結
-p,?--perms?保持文件權限
-o,?--owner?保持文件屬主信息
-g,?--group?保持文件屬組信息
-D,?--devices?保持設備文件信息
-t,?--times?保持文件時間信息
-S,?--sparse?對稀疏文件進行特殊處理以節省DST的空間
-n,?--dry-run現實哪些文件將被傳輸
-W,?--whole-file?拷貝文件,不進行增量檢測
-x,?--one-file-system?不要跨越文件系統邊界
-B,?--block-size=SIZE?檢驗算法使用的塊尺寸,默認是700字節
-e,?--rsh=COMMAND?指定使用rsh、ssh方式進行數據同步
--rsync-path=PATH?指定遠程服務器上的rsync命令所在路徑信息
-C,?--cvs-exclude?使用和CVS一樣的方法自動忽略文件,用來排除那些不希望傳輸的文件
--existing?僅僅更新那些已經存在于DST的文件,而不備份那些新創建的文件
--delete?刪除那些DST中SRC沒有的文件
--delete-excluded?同樣刪除接收端那些被該選項指定排除的文件
--delete-after?傳輸結束以后再刪除
--ignore-errors?及時出現IO錯誤也進行刪除
--max-delete=NUM?最多刪除NUM個文件
--partial?保留那些因故沒有完全傳輸的文件,以是加快隨后的再次傳輸
--force?強制刪除目錄,即使不為空
--numeric-ids?不將數字的用戶和組ID匹配為用戶名和組名
--timeout=TIME?IP超時時間,單位為秒
-I,?--ignore-times?不跳過那些有同樣的時間和長度的文件
--size-only?當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間
--modify-window=NUM?決定文件是否時間相同時使用的時間戳窗口,默認為0
-T?--temp-dir=DIR?在DIR中創建臨時文件
--compare-dest=DIR?同樣比較DIR中的文件來決定是否需要備份
-P?等同于?--partial
--progress?顯示備份過程
-z,?--compress?對備份的文件在傳輸時進行壓縮處理
--exclude=PATTERN?指定排除不需要傳輸的文件模式
--include=PATTERN?指定不排除而需要傳輸的文件模式
--exclude-from=FILE?排除FILE中指定模式的文件
--include-from=FILE?不排除FILE指定模式匹配的文件
--version?打印版本信息
--address?綁定到特定的地址
--config=FILE?指定其他的配置文件,不使用默認的rsyncd.conf文件
--port=PORT?指定其他的rsync服務端口
--blocking-io?對遠程shell使用阻塞IO
-stats?給出某些文件的傳輸狀態
--progress?在傳輸時現實傳輸過程
--log-format=formAT?指定日志文件格式
--password-file=FILE?從FILE中得到密碼
--bwlimit=KBPS?限制I/O帶寬,KBytes?per?second
-h,?--help?顯示幫助信息
要排除同步某個目錄時,為rsync添加--exculde=PATTERN參數,注意,路徑是相對路徑,具體查看man?rsync。
要排除某個目錄的事件監聽的處理時,為inotifywait添加--exclude或--excludei參數,具體查看man?inotifywait。
?
轉載于:https://blog.51cto.com/dbachina/781009
總結
以上是生活随笔為你收集整理的rsync+inotify实现文件时时单项同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring中关于aop拦截功能的记录
- 下一篇: ThinkPHP 框架培训资料