cron+nRsync 定時備份 web01-》backup
inotify/Sersync+Rsync 實時備份 nfs01-》backup
一窝撵、inotify-tools? 、? sersync
inotify:
異步實時文件監(jiān)控
優(yōu)點:監(jiān)控文件文件系統(tǒng)事件變化,通過復(fù)制工具實現(xiàn)實時數(shù)據(jù)復(fù)制。
缺點:實測并發(fā)如果大于200個文件,復(fù)制會有延遲。單線程(加&并發(fā))
——————————————————————————————————————————————————————————————————————————————
1.1下載服務(wù)
yum install epel-release -y
yum install inotify-tools -y(nfs01服務(wù)端下載)
1.2查看inotify支持情況? *****
[root@nfs01 ~]# uname -r
3.10.0-957.5.1.el7.x86_64
[root@nfs01 ~]# ls -l /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_queued_events
設(shè)置inotify實例事件,隊列可容納的事件數(shù)量
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_user_instances
設(shè)置每個用戶可以運行的inotifywait或inotifywatch命令
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_user_watches
設(shè)置inotifywait或inotifywatch命令可以監(jiān)視的文件數(shù)量(單進程)
rpm -qa inotify-tools? 看版本
——————————————————————————————————————————————————————————————————————————————————
inotifywait:監(jiān)控文件
intifywatch:測檢創(chuàng)建事件統(tǒng)計功能
1.3編寫腳本
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data
#####################################
inotifywait命令參數(shù)
-m 始終保持事件監(jiān)聽狀態(tài)*****
-r 遞歸監(jiān)控目錄數(shù)據(jù)變化*****
-e 指定鑒定的事件端辱,省略標識所有事件都進行監(jiān)聽*****
-o 標準正確輸出
-s 標準錯誤輸出
-d 類似于-m,將命令運行在后臺虽画。
-q 只打印事件信息
--excludei 排除文件或目錄時舞蔽,不區(qū)分大小寫
--timefmt? 指定時間輸出格式
--format? 打印使用實際監(jiān)控輸出的內(nèi)容
————————————————————————————————————————————————————
重要監(jiān)控事件參數(shù)匯總
1.close
close_write(修改)
close_nowrite? ? 文件或目錄關(guān)閉與開啟(讀寫關(guān)閉)
2.close_write?
create(創(chuàng)建)? ? ? ? ? 含創(chuàng)建文件事件,不含創(chuàng)建目錄码撰,自身修改
delete(刪除)? ? ? ? ? 含刪除文件事件渗柿,不含創(chuàng)建目錄
3.monve
monved_to(移入)? ? ?
monved_from(移出)? ? 文件或者目錄移動移出
————————————————————————————————————————————————————
#####################################
sh -x 腳本? 顯示執(zhí)行過程。
/server/scripts/monitor.sh
1.4innotify-tools優(yōu)化 *****
vim /etc/rc.local
echo "50000000" >/proc/sys/fs/inotify/max_user_watches
echo "50000000" >/proc/sys/fs/inotify/max_queued_events
##########################
sersync特點
優(yōu)點
1.使用c++編寫脖岛,對重復(fù)文件臨時文件過濾朵栖,速度快
2.配置簡單
3.多線程復(fù)制
4.自帶出錯處理機制,通過失敗隊列對出錯文件重新復(fù)制
5.自帶crontab功能柴梆,可以在xml配置文件中開啟
6.自帶socket與http協(xié)議擴展陨溅,滿足特殊需求二次開發(fā)。
缺點
定時crontab重傳失敗會清空隊列绍在,即清空/tmp/rsync_fail_log.sh文件门扇。
這樣就會造成sersync服務(wù)恢復(fù)正常后(即可以同步文件),
數(shù)據(jù)同步的兩個服務(wù)器數(shù)據(jù)不一致的現(xiàn)象揣苏。因為悯嗓,/tmp/rsync_fail_log.sh文件為空件舵,
而sersync只對發(fā)生變化的文件做實時同步(sersync默認每隔十個小時做一次完整的數(shù)據(jù)同步)卸察。
###########################
二、sersync
2.1部署環(huán)境配置:exports
2.2測試一下rsync
rsync -az /data rsync_backup@172.16.1.41::backup
2.3下載sersync铅祸,解壓坑质,移動application到/? tree 檢查一下
完成監(jiān)控配置
完整命令拼接
啟動服務(wù)
/application/sersync/bin/sersync -d
————————————————————————————————————————————————————————————————
參數(shù)-d:啟用守護進程模式
參數(shù)-r:在監(jiān)控前合武,將監(jiān)控目錄與遠程主機用rsync命令推送一遍
c參數(shù)-n: 指定開啟守護線程的數(shù)量,默認為10個
參數(shù)-o:指定配置文件涡扼,默認使用confxml.xml文件
參數(shù)-m:單獨啟用其他模塊稼跳,使用 -m refreshCDN 開啟刷新CDN模塊
參數(shù)-m:單獨啟用其他模塊,使用 -m socket 開啟socket模塊
參數(shù)-m:單獨啟用其他模塊吃沪,使用 -m http 開啟http模塊
不加-m參數(shù)汤善,則默認執(zhí)行同步程序
————————————————————————————————————————————————————————————————
總結(jié):
inotify-tools
1.下載服務(wù)
yum install inotify-tools -y(nfs01服務(wù)端下載)
2.查看
2.1 uname -r
ls -l /proc/sys/fs/inotify
rpm -qa inotify-tools 看版本
3.編寫腳本
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data
4.優(yōu)化
vim /etc/rc.local
echo "50000000" >/proc/sys/fs/inotify/max_user_watches? 可以監(jiān)視的文件數(shù)量
echo "50000000" >/proc/sys/fs/inotify/max_queued_events? 隊列可容納的事件數(shù)量
______________
sersync
1.配置環(huán)境:echo 'export? RSYNC_PASSWORD=oldboy' >>/etc/bashrc
2.下載安裝包,解壓票彪,移動程序到根目錄下
3.完成監(jiān)控配置
? 完成命令拼接? /application/sersync/conf/confxml.xml
4.啟動服務(wù)/application/sersync/bin/sersync -d
? ? ? ? ? /application/sersync/bin/sersync -h(查看服務(wù))
set nu vim里顯示行號
pkill 殺死 ? ?
————————————————————————————————————————————————————————
1.在/etc/rc.d/init.d/sersync目錄編寫腳本
[root@nfs01 ~]# 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
2.給腳本添加執(zhí)行權(quán)限
chmod +x /etc/rc.d/init.d/sersync
3.編輯/usr/lib/systemd/system/sersync.service
[root@nfs01 ~]# 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
4.給文件添加執(zhí)行權(quán)限
chmod +x /usr/lib/systemd/system/sersync.service
5.完成
[root@nfs01 ~]# systemctl status? sersync.service
[root@nfs01 ~]# systemctl restart sersync.service
[root@nfs01 ~]# systemctl enable? sersync.service
查看是否啟動監(jiān)控程序:
[root@nfs01 ~]# ps -ef|grep sersync|grep -v grep
————————————————————————————————————————————————