實(shí)時(shí)復(fù)制實(shí)踐:
前提:backup rsync服務(wù)端部署好茶宵。
1)部署NFS客戶端
echo 'export RSYNC_PASSWORD=密碼' >>/etc/bashrc##將rsync的密碼生成變量追加到bashrc中
source /etc/bashrc##刷新bashrc
echo $RSYNC_PASSWORD##檢查變量是否生成
rsync -avz /data rsync_backup@172.16.1.41::backup/##測(cè)試推送
inotify實(shí)時(shí)同步
1)查看inotify支持情況
?uname -r
3.10.0-957.5.1.el7.x86_64
?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
2)安裝inotify-tools
yum install epel-release -y
yum install inotify-tools -y
3)參數(shù)
inotifywait
-m? 監(jiān)聽? ? -r? 遞歸監(jiān)視目錄? ? -d? 變?yōu)槭刈o(hù)進(jìn)程? ? -q? 簡(jiǎn)化輸出? ? -e監(jiān)聽哪些事件 --format 監(jiān)聽的
監(jiān)聽參數(shù)
close_write? 文件的增與改? ? delete? 文件的刪除? ? move? 文件的移動(dòng)
4)測(cè)試實(shí)踐?
監(jiān)控哪些事件蹬跃?
增 改 刪 需要監(jiān)控
inotifywait -mrq --format '%w%f' -e close_write,delete /data
5)編寫腳本
#!/bin/bash
export RSYNC_PASSWORD=123456 ##定義rsync匿名用戶的密碼文件
A =/usr/bin/inotifywait##定義變量inotifywait的全路徑
$A -mrq --format '%w%f' -e close_write,delete /data && | \?##監(jiān)聽data目錄的增刪改并將結(jié)果交給while循環(huán)
while read B ##while將上面的監(jiān)聽結(jié)果賦值給B
do
[ ! -e "$B" ] && cd /data && \## 判斷變量B文件如果不存在繼續(xù)執(zhí)行如果存在則執(zhí)行第二條
rsync -az --delete ./ rsync_backup@172.16.1.41::backup && | continue##如果文件不存在則切換到data目錄下并對(duì)目錄下的所有內(nèi)容做增量同步
rsync -az --delete $B rsync_backup@172.16.1.41::backup##如果文件存在則把被修改的文件增量同步
done##結(jié)束
6)把腳本放入后臺(tái)守護(hù)執(zhí)行
/bin/bash /server/scripts/inotifywait? &
sersync實(shí)時(shí)同步
下載路徑
wget https://github.com/wsgzao/sersync/blob/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
安裝包統(tǒng)一放在/server/tools目錄下
安裝包解壓到 /application/
tree /application/##檢查
/application/
└── sersync
? ? ├── bin
? ? │?? └── sersync
? ? ├── conf
? ? │?? ├── confxml.xml
? ? │?? └── confxml.xml.ori
? ? ├── logs
? ? │?? └── rsync_fail_log.sh
? ? └── readme.txt
4 directories, 5 files
vim? /application/sersync/conf/confxml.xml##sersync的配置文件
4)啟動(dòng)服務(wù)
/application/sersync/bin/sersync -d -n 10 -o /application/sersync/conf/confxml.xml##命令行啟動(dòng)
/application/sersync/bin/sersync -d##簡(jiǎn)化
pkill sersync##關(guān)閉服務(wù)
參數(shù)-d:啟用守護(hù)進(jìn)程模式
參數(shù)-r:在監(jiān)控前,將監(jiān)控目錄與遠(yuǎn)程主機(jī)用rsync命令推送一遍
c參數(shù)-n: 指定開啟守護(hù)線程的數(shù)量索昂,默認(rèn)為10個(gè)
參數(shù)-o:指定配置文件,默認(rèn)使用confxml.xml文件
參數(shù)-m:單獨(dú)啟用其他模塊扩借,使用 -m refreshCDN 開啟刷新CDN模塊
參數(shù)-m:單獨(dú)啟用其他模塊椒惨,使用 -m socket 開啟socket模塊
參數(shù)-m:單獨(dú)啟用其他模塊,使用 -m http 開啟http模塊
不加-m參數(shù)潮罪,則默認(rèn)執(zhí)行同步程序
vim? /etc/rc.local
/application/sersync/bin/sersync -d##設(shè)為開機(jī)自啟
配置:systemctl start sersync啟動(dòng)方案
配置:systemctl start sersync啟動(dòng)方案
vim? /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 ## 給修改的文件加執(zhí)行權(quán)限
vim /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??## 給修改的文件加執(zhí)行權(quán)限