NFS客戶端對(duì)backup服務(wù)端的實(shí)時(shí)復(fù)制

實(shí)時(shí)復(fù)制實(shí)踐:

前提:backup rsync服務(wù)端部署好。

1)部署NFS客戶端

[root@nfs01 ~]# echo 'export RSYNC_PASSWORD=oldboy' >>/etc/bashrc
[root@nfs01 ~]# source /etc/bashrc
[root@nfs01 ~]# echo $RSYNC_PASSWORD
oldboy
測(cè)試推送
[root@nfs01 ~]# rsync -avz /data rsync_backup@172.16.1.41::backup/
sending incremental file list
sent 164 bytes  received 25 bytes  126.00 bytes/sec
total size is 0  speedup is 0.00

2)查看inotify支持情況

[root@nfs01 ~]# uname -r
3.10.0-957.5.1.el7.x86_64
[root@nfs01 ~]#  ls -l /proc/sys/fs/inotify/
總用量 0
-rw-r--r-- 1 root root 0 4月  19 09:45 max_queued_events
-rw-r--r-- 1 root root 0 4月  19 09:45 max_user_instances
-rw-r--r-- 1 root root 0 4月  19 09:45 max_user_watches

3)安裝inotify-tools

yum install inotify-tools -y
yum install epel-release -y
[root@nfs01 ~]# rpm -ql inotify-tools|head -2
/usr/bin/inotifywait
/usr/bin/inotifywatch
[root@nfs01 ~]# rpm -qa inotify-tools
inotify-tools-3.14-8.el7.x86_64
inotify機(jī)制簡(jiǎn)介:(了解即可)

Inotify是一種異步的件系統(tǒng)事件監(jiān)控機(jī)制, Linux內(nèi)核從2.6.13起,加入了Inotify支持,通過(guò)Inotify可以監(jiān)控文件系統(tǒng)中添加袁波、刪除,修改亏栈、移動(dòng)等各種事件,
利用這個(gè)內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況,而inotify-tools正是實(shí)施這樣監(jiān)控的軟件豁状。
實(shí)際上inotify-tools是一個(gè)監(jiān)控指定目錄數(shù)據(jù)實(shí)時(shí)變化的軟件程序衩辟。
Inotify程序原理是一種事件驅(qū)動(dòng)機(jī)制,它為應(yīng)用程序監(jiān)控文件系統(tǒng)事件提供了實(shí)時(shí)響應(yīng)事件的機(jī)制,可以做到對(duì)事件處理的實(shí)時(shí)響應(yīng)粮彤。
inotify的實(shí)現(xiàn)有幾款軟件: inotify-tools, sersync.Irsyncd.
inotify優(yōu)點(diǎn):
inotify機(jī)制優(yōu)點(diǎn)監(jiān)控文件系統(tǒng)事件變化,通過(guò)復(fù)制工具實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)復(fù)制谬俄。支持多線程實(shí)時(shí)復(fù)制
inotify缺點(diǎn):
inotify機(jī)制缺點(diǎn)實(shí)測(cè)并發(fā)如果大于200個(gè)文件(10-100k) ,復(fù)制會(huì)有延遲汤功。
利用man proc方式可以獲取到以上inotify目錄以及下面三個(gè)文件的說(shuō)明信息,
根據(jù)說(shuō)明信息,我們可以得知三個(gè)文件作用的詳細(xì)說(shuō)明:通過(guò)man proc獲取內(nèi)核中inotify信息說(shuō)明:
/proc/sys/fs/inotify/目錄包含了三個(gè)文件max_queued_events, max_user_instances, and max_user_watches
可以用來(lái)限制通過(guò)inotify接口消耗內(nèi)核內(nèi)存的數(shù)量;

更詳細(xì)信息參見(jiàn)man手冊(cè)7級(jí)別inotify說(shuō)明上述三個(gè)文件的說(shuō)明如下:
max_user_watches:設(shè)置inotifywait或inotifywatch命令可以監(jiān)視的文件數(shù)量(單進(jìn)程)
max_user_instances: 設(shè)置每個(gè)用戶可以運(yùn)行的inotifywait或inotifywatch命令的進(jìn)程數(shù)
max_queued_events: 設(shè)置inotify實(shí)例事件(event)隊(duì)列可容納的事件數(shù)量
說(shuō)明:實(shí)例概念就是,多個(gè)相同服務(wù),啟動(dòng)運(yùn)行多個(gè)進(jìn)程
inotify工具命令介紹:
inotify-tools工具主要命令
在inotify-tools軟件部署完畢后,主要應(yīng)用兩個(gè)命令實(shí)現(xiàn)數(shù)據(jù)信息的監(jiān)控,
一個(gè)利用inotifywait命令實(shí)現(xiàn)對(duì)數(shù)據(jù)變化事件的監(jiān)控,
另一個(gè)利用inotifywatch命令實(shí)現(xiàn)對(duì)數(shù)據(jù)事件信息統(tǒng)計(jì)物邑。
這個(gè)兩個(gè)命令是能夠應(yīng)用好 inotify-tools軟件的關(guān)鍵,下面對(duì)這兩個(gè)軟件說(shuō)明如下:
inotifywait:在被監(jiān)控的目錄等待特定文件系統(tǒng)事件(open, close,delete等)發(fā)生,
執(zhí)行后處于阻塞狀態(tài),適合在Shell腳本中使用,此命令是重點(diǎn)。
inotifywatch:收集被監(jiān)控的文件系統(tǒng)使用的統(tǒng)計(jì)數(shù)據(jù),指文件系統(tǒng)事件發(fā)生的次數(shù)統(tǒng)計(jì)滔金。

4)命令參數(shù)和事件知識(shí)

-m|--monitor 始終保持事件監(jiān)聽(tīng)狀態(tài)(重要參數(shù))
-r 遞歸監(jiān)控目錄數(shù)據(jù)信息變化(重要參數(shù))
-q|--quiet 輸出信息少(只打印事件信息)
--excludei<pattern> 排除文件或目錄時(shí),不區(qū)分大小寫
-e 指定監(jiān)聽(tīng)指定的事件,如果省略,表示所有事件都進(jìn)行監(jiān)聽(tīng)色解。(重要參數(shù))
access 文件或目錄內(nèi)容被讀取
modify 文件或目錄內(nèi)容被寫入
attrib 文件或目錄屬性改變
close_write 文件或目錄關(guān)閉,在寫入模式打開(kāi)之后關(guān)閉的。(重要參數(shù))
close_nowrite 文件或目錄關(guān)閉,在只讀模式打開(kāi)之后關(guān)閉的
close 文件或目錄關(guān)閉,不管讀或是寫模式
open 文件或目錄被打開(kāi)
moved_to 文件或目錄被移動(dòng)到監(jiān)控的目錄中
moved_from 文件或目錄被移動(dòng)從監(jiān)控的目錄中
move 文件或目錄不管移動(dòng)到或是移動(dòng)出監(jiān)控目錄都觸發(fā)事件
create 文件或目錄創(chuàng)建在監(jiān)控的目錄中(重要參數(shù))
delete 文件或目錄被刪除在監(jiān)控的目錄中(重要參數(shù))
delete_self 文件或目錄被刪除
unmount 文件系統(tǒng)包含的文件或目錄不能卸載

5)測(cè)試實(shí)踐:刪除 創(chuàng)建 修改

[root@nfs01 ~]# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,delete /data

6)思考:實(shí)現(xiàn)數(shù)據(jù)復(fù)制

[root@nfs01 ~]# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,delete /data

7)編寫腳本:

mkdir /server/scripts -p
rsync -az --delete /data/ rsync_backup@172.16.1.41::backup
[root@nfs01 /server/scripts]# /bin/sh /server/scripts/monitor1.sh &
[2] 9199
[root@nfs01 /server/scripts]# tail -2 /etc/rc.local
########################
/bin/sh /server/scripts/monitor1.sh &

方法1:

[root@nfs01 /server/scripts]# cat monitor1.sh
#!/bin/sh
cmd="/usr/bin/inotifywait"
$cmd -mrq  --format '%w%f' -e close_write,delete /data|\
while read line
do
  cd /data&&\
  rsync -az --delete ./ rsync_backup@172.16.1.41::backup
done
[root@nfs01 /server/scripts]# sh -x monitor.sh      #-------監(jiān)控餐茵,在nfs創(chuàng)建科阎,backup下看,監(jiān)控顯示忿族。

方法2:【不常用】

[root@nfs01 /server/scripts]# cat monitor.sh
#!/bin/sh
cmd="/usr/bin/inotifywait"
$cmd -mrq  --format '%w%f' -e close_write,delete /data|\
while read line
do
  #刪除事件發(fā)生
  [ ! -e  "$line" ] && cd /data &&\
  rsync -az --delete ./ rsync_backup@172.16.1.41::backup && continue
  #處理增改事件
  rsync -az --delete $line rsync_backup@172.16.1.41::backup
done

sersync實(shí)踐:

1)客戶端推送成功

rsync -az /data rsync_backup@172.16.1.41::backup

2)部署sersync服務(wù)(NFS)

wget https://github.com/wsgzao/sersync/blob/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
sersync_oldboy_64bit_20160928.tar.gz
[root@nfs01 /server/tools]# mkdir /application -p
[root@nfs01 /server/tools]# mv application/sersync /application/
[root@nfs01 /server/tools]# tree /application/
/application/

下載安裝包:直接拽進(jìn)來(lái)

[root@nfs01 /server/tools]# ls
sersync_oldboy_64bit_實(shí)時(shí)復(fù)制軟件下載到虛擬機(jī).tar
[root@nfs01 /server/tools]# ll
total 712
-rw-r--r-- 1 root root 728419 Apr 19 11:50 sersync_oldboy_64bit_實(shí)時(shí)復(fù)制軟件下載到虛擬機(jī).tar
[root@nfs01 /server/tools]# tar -xf sersync_oldboy_64bit_實(shí)時(shí)復(fù)制軟件下載到虛擬機(jī).tar
[root@nfs01 /server/tools]# ls
application  sersync_oldboy_64bit_實(shí)時(shí)復(fù)制軟件下載到虛擬機(jī).tar
[root@nfs01 /server/tools]# cd application/
[root@nfs01 /server/tools/application]# ls
sersync
[root@nfs01 /server/tools/application]# cd sersync/
[root@nfs01 /server/tools/application/sersync]# ls
bin  conf  logs  readme.txt
[root@nfs01 /server/tools/application/sersync]# cd conf/
[root@nfs01 /server/tools/application/sersync/conf]# ls
confxml.xml  confxml.xml.ori
[root@nfs01 /server/tools/application/sersync/conf]# ll
total 8
-rw-r--r-- 1 root root 2266 Sep 28  2016 confxml.xml
-rw-r--r-- 1 root root 2214 Sep 28  2016 confxml.xml.ori
[root@nfs01 /server/tools/application/sersync/conf]# vim confxml.xml

3)sersync配置文件:完成兩項(xiàng)任務(wù)

a.完成監(jiān)控配置:
inotifywait -mrq --format '%w%f' -e createFolder,close_write,delete,moveFrom,moveTo /data
b.完整命令拼接:
rsync -az /data --timeout=100 rsync_backup@172.16.1.41::backup

4)啟動(dòng)服務(wù)

[root@nfs01 /application/sersync/conf]# ../bin/sersync -h
[root@nfs01 /application/sersync/conf]# /application/sersync/bin/sersync -d -n 10 -o /application/sersync/conf/confxml.xml
最終
/application/sersync/bin/sersync -d
pkill sersync

二進(jìn)制程序锣笨,不是yum安裝的,所以不能systemctl start sersync

[root@nfs01 /data]# tail -1 /etc/rc.local
/application/sersync/bin/sersync -d
[root@nfs01 /data]# cat /etc/rc.d/init.d/sersync
#!/bin/bash
# chkconfig: 2345 21 81
# description: rsync service start and stop scripts
# Author: oldboy
# Organization: www.oldboyedu.com
start(){
    /application/sersync/bin/sersync -d -o /application/sersync/conf/confxml.xml &>/dev/null
}
stop(){
    killall sersync 2>/dev/null
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
    *)
        echo $"Usage:$0 {start|stop|restart}"
        exit 1
esac
chmod +x /etc/rc.d/init.d/sersync
[root@nfs01 /data]# cat /usr/lib/systemd/system/sersync.service
[Unit]
Description=sersyncd service
After=network.target
[Service]
Type=forking         
ExecStart=/etc/rc.d/init.d/sersync start 
ExecReload=/etc/rc.d/init.d/sersync restart
ExecStop=/etc/rc.d/init.d/sersync stop   
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod +x /usr/lib/systemd/system/sersync.service
[root@nfs01 /data]# systemctl enable sersync.service
Created symlink from /etc/systemd/system/multi-user.target.wants/sersync.service to /usr/lib/systemd/system/sersync.service.
[root@nfs01 /data]# systemctl status sersync.service
● sersync.service - sersyncd service
  Loaded: loaded (/usr/lib/systemd/system/sersync.service; enabled; vendor preset: disabled)
  Active: inactive (dead)

[root@nfs01 /data]# systemctl stop sersync
[root@nfs01 /data]# ps -ef|grep sersync|grep -v grep
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末道批,一起剝皮案震驚了整個(gè)濱河市错英,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌隆豹,老刑警劉巖椭岩,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異噪伊,居然都是意外死亡簿煌,警方通過(guò)查閱死者的電腦和手機(jī)氮唯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門鉴吹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惩琉,你說(shuō)我怎么就攤上這事豆励。” “怎么了瞒渠?”我有些...
    開(kāi)封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵良蒸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我伍玖,道長(zhǎng)嫩痰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任窍箍,我火速辦了婚禮串纺,結(jié)果婚禮上丽旅,老公的妹妹穿的比我還像新娘。我一直安慰自己纺棺,他們只是感情好榄笙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著祷蝌,像睡著了一般茅撞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巨朦,一...
    開(kāi)封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天米丘,我揣著相機(jī)與錄音,去河邊找鬼糊啡。 笑死蠕蚜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悔橄。 我是一名探鬼主播靶累,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼癣疟!你這毒婦竟也來(lái)了挣柬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤睛挚,失蹤者是張志新(化名)和其女友劉穎邪蛔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體扎狱,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侧到,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淤击。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匠抗。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖污抬,靈堂內(nèi)的尸體忽然破棺而出汞贸,到底是詐尸還是另有隱情,我是刑警寧澤印机,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布矢腻,位于F島的核電站,受9級(jí)特大地震影響射赛,放射性物質(zhì)發(fā)生泄漏多柑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一楣责、第九天 我趴在偏房一處隱蔽的房頂上張望竣灌。 院中可真熱鬧诫隅,春花似錦、人聲如沸帐偎。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)削樊。三九已至豁生,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漫贞,已是汗流浹背甸箱。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迅脐,地道東北人芍殖。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谴蔑,于是被迫代替她去往敵國(guó)和親豌骏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容