安裝Rsync

分別在服務(wù)器A和服務(wù)器B的terminal執(zhí)行:

sudo yum install rsync

安裝完畢后,會(huì)發(fā)現(xiàn)rsync的配置文件位于 etc/rsyncd.conf 。該文件使用daemon方式同步時(shí)需要使用,此處暫不介紹。

配置服務(wù)器A和B之間的免密登錄

服務(wù)器A執(zhí)行:

ssh-keygen
ssh-copy-id 服務(wù)器B的IP地址

創(chuàng)建源端目錄和目標(biāo)端目錄

在服務(wù)器A中:

mkdir /home/paul/rsync

在服務(wù)器B中:

mkdir /home/paul/rsync

在服務(wù)器A創(chuàng)建測(cè)試文件

echo "Hello from Server A" >> /home/paul/rsync/demo.txt

執(zhí)行文件傳送命令

在服務(wù)器A運(yùn)行:

# (1)
rsync -avPz --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync
# (2)
rsync -avPz --delete --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync

會(huì)發(fā)現(xiàn)在demo.txt也出現(xiàn)在了服務(wù)器B中/home/paul/rsync目錄。

命令解析:

(1) 將服務(wù)器A中的/home/paul/rsync目錄內(nèi)的文件復(fù)制到服務(wù)器B(192.168.100.130)的/home.paul/rsync中。

(2) 比較目標(biāo)端和源端的文件,如果目標(biāo)端的文件在源端不存在,在目標(biāo)端刪除該文件。

Rsync存在的問題

Rsync僅是一個(gè)文件復(fù)制工具,它無(wú)法對(duì)源端文件的增刪改操作進(jìn)行監(jiān)聽。在源端做出更改后,需要執(zhí)行rsync命令才能將變更同步到目標(biāo)端。

Rsync在每次同步前需要掃描整個(gè)目錄。如果源目錄內(nèi)的文件數(shù)量比較多,掃描可能需要耗費(fèi)較多的時(shí)間。
為了滿足實(shí)時(shí)監(jiān)聽的要求,我們需要引入另一個(gè)工具:inotify。

文件系統(tǒng)事件監(jiān)聽工具inotify

inotify-tools為inotify提供一個(gè)簡(jiǎn)單接口。它是一個(gè)c語(yǔ)言編寫的庫(kù),同時(shí)也包含命令行工具。

inotify-tools的詳細(xì)介紹請(qǐng)點(diǎn)擊: https://github.com/rvoicilas/inotify-tools/wiki

inotify-tools的安裝

對(duì)于centos7系統(tǒng),依次執(zhí)行:

yum install -y epel-release
yum --enablerepo=epel install inotify-tools

使用inotifywait命令進(jìn)行事件監(jiān)聽

監(jiān)聽腳本如下(inotifywait-rsync.sh):

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /home/paul/rsync/ | while read file
do
rsync -avPz --progress /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
rsync -avPz --delete /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
echo "${file} was synchronized"
done

參數(shù)解析

對(duì)于每次觸發(fā)的監(jiān)聽時(shí)間,inotifywait會(huì)執(zhí)行do和done之間的代碼。在這里,我們調(diào)用之前所說的rsync命令進(jìn)行文件同步。

監(jiān)聽腳本加入crontab

crontab -e
* * * * * sh /home/paul/inotifywait-rsync.sh

參考資料

https://rsync.samba.org

https://github.com/rvoicilas/inotify-tools/wiki

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-62778877-8306;郵箱:fanjiao@west.cn。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處:西部數(shù)碼知識(shí)庫(kù) » Linux服務(wù)器間文件實(shí)時(shí)同步的實(shí)現(xiàn)

登錄

找回密碼

注冊(cè)