首頁  >  文章  >  運維  >  分享rsync+inotify即時同步實例教程

分享rsync+inotify即時同步實例教程

PHP中文网
PHP中文网原創
2017-06-20 11:57:301394瀏覽

1.rsync

與傳統的cptar#備份方式相比, 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

 

 

 

#二、客戶端設定

 

安裝rsyncinotify

 

1.

安裝rsyncyum已安裝即可)

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/inotify

 

   4.腳本都是放在

/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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn