1.rsync
與傳統的cp、tar#備份方式相比, rsync具有安全性高、備份快速、支援增量備份的優點,透過rsync可以解決對即時性要求不高的資料備份需求,例如定期的備份檔案伺服器資料到遠端伺服器,對本機磁碟定期做資料鏡像等。
隨著應用系統規模不斷的擴大,對資料安全性和可靠性也提出了更高的要求,rsync在高階業務中也逐漸暴露出許多不足。首先,rsync即時同步時,需要掃描所有的檔案進行比對,進行差量傳輸。如果文件數量打到了百萬甚至千萬量級,掃描所有的文件是非常耗時的,而且正在改變的往往是其中很少一部分,這是非常低效的方式。其次,rsync不能即時監測、同步資料。雖然它可以透過linux守護程式的方式出發同步,但是兩次出發動作一定會有時間差,這樣就導致了服務端和客戶端出現不一致,無法在應用故障時完全的恢復數據。基於以上原因,rsync+inotify就出現了!
2.inotify(監控)
inotify是一種強大的、細緻的、非同步的文件系統事件監控機制。透過inotify可以監控檔案系統中的新增、刪除、修改、移動等各種細微事件,利用這個核心藉口,第三方軟體可以監控檔案系統下的各種情況變化,而inotify-tools就是就是這樣的一個第三方軟體。
一、服務端設定(只需安裝rsync)
#共享到/tmp/下:
1.新增虛擬使用者useradd rsync -s /sbin/nologin
chown -R rsync.rsync /tmp/
2.設定#rsyncd.conf設定檔
vim rsyncd.conf
#rsync_config_______________start
#
##rsyncd.conf start
##
uid = rsync(使用者)
gid = rsync(使用者)
use chroot = no(防止安全問題)
#max connections = 200(有多少個客戶端可以連接我這個備份伺服器)
#
timeout = 300(逾時,多久沒有動作就斷掉連線)
pid file = /var/run/rsyncd.pid(行程編號,將進程編號放在這個檔案裡)
lock file = /var/run/rsync.lock(相當於「鎖」的概念,上廁所鎖門的概念)
log file = /var/log/rsyncd.log(出錯了,可以查看log日誌檔案)
[tmp](模組)
path = /tmp/(路徑)
ignore errors(忽略錯誤)
#read only = false(只讀為假,可讀,可寫的意思)
list = false(不允許列表)
#hosts allow = 10.0.0.0/24(允許的主機)
hosts deny = 0.0.0.0/32(拒絕的主機)
#auth users = rsync_backup(支援虛擬使用者)
secrets file = /etc/rsync.password(使用者對應的密碼檔案)
#
#rsync_config_______________end
3.建立密碼檔案
# echo “rsync_backup:123456” >/etc/rsync.password
#凡是密碼檔全部600權限chmod 600 /etc/rsync.password
## 4 .rsync --daemon daemon模式啟動
#
5.將rsync --daemon加入/etc/rc.local
## echo “/ usr/bin/rsync --daemom” >>/etc/rc.local #二、客戶端設定
安裝rsync和inotify
1.安裝rsync(yum已安裝即可)
# 2.建立密碼認證檔案 echo “123456” >/etc/rsync.password只需要密碼
#設定權限600 chmod 600 /etc/rsync.password
#3.安裝inotify:##
cd /home/cai/tools/
wget
#
## 54 tar xf inotify-tools-3.14.tar.gz 55 ls# # 56 cd inotify-
# #
57 ./configure --prefix=/usr/local/inotify-tools-3.14
58 make &c ll
install
# 59 yum install -y gcc 60 ./configure --prefix=/usr/local/inotify-tools-3.14##
## # 61 make && make install 62 cd 62 cd 62 cd 62 cd /usr/local/inotify-tools-3.14/# 64 ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify4.腳本都是放在
/server/scripts
下
# vim /server/scripts /rsync.sh #!/bin/sh# host=192.168.76.129 src=/tmp/ des=tmp# user=rsync_backup #/usr /local/inotify/bin/inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | \ while read files do /usr/bin/rsync -avz --delete $src $user@$host::$des --password-file=/etc/rsync.password echo "${files} was rsynced" >> ;/var/log/rsyncd.log 2>&1 #done exit o~
#並給予
764權限
#測試腳本:
###sh -x /server/scripts/rsync.sh #執行腳本:sh /server/scripts/rsync.sh &
#
######將###rsync.sh###腳本放入到開機啟動項目:######echo ###“/tmp/rsync.sh” >>/ etc/rc.local###### ###以上是分享rsync+inotify即時同步實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!