監控目錄備份是否成功通用指令碼backup_monitor.sh
1、定義要監控的主機資訊 backup_monitor.ini
指令碼:cat /Data/ftpuser01/scripts/backup_monitor.ini
2、檢查當天備份與前一天備份大小(通用)
檢查原則:
1)當天備份小於4K
2)當天備份與前一天備份比值小於0.1
以上條件只要一個符合,則當天備份失敗,指令碼返回 1;備份成功,返回 0。
3、目錄示例
4、小結:
1、du命令
2、浮點數計算
3、浮點數比較
指令碼:cat /Data/ftpuser01/scripts/backup_monitor.ini
-
####################################################################################
-
# 備份目錄解析:
-
# BackupDir=/Data/ftpuser01/10.1.4.48 備份伺服器上的路徑,對應主機host3的備份上傳路徑。
-
# private_ip=10.1.1.96 用內網標識主機IP地址。
-
# hostname=host3 主機名
-
# SourceDir=/Data/jenkins/system,Kafka-Consumer 源主機要備份打包的目錄
-
####################################################################################
-
-
-
#定義要備份的目錄全路徑
-
declare -a i_bak_object_dir_array=(
-
"BackupDir=/Data/ftpuser01/10.1.1.96 hostname=host1 private_ip=10.1.1.96 SourceDir=/datacenter"
-
"BackupDir=/Data/ftpuser01/10.1.2.67 hostname=host3 private_ip=10.1.2.67 SourceDir=/datacenter"
-
"BackupDir=/Data/ftpuser01/10.1.4.48 hostname=host3 private_ip=10.1.4.48 SourceDir=/Data/jenkins/system,Kafka-Consumer"
-
"BackupDir=/Data/ftpuser01/10.1.1.86 hostname=host4 private_ip=10.1.1.86 SourceDir=/Data/verComponent"
- )
檢查原則:
1)當天備份小於4K
2)當天備份與前一天備份比值小於0.1
以上條件只要一個符合,則當天備份失敗,指令碼返回 1;備份成功,返回 0。
-
#!/bin/sh
-
-
######################################################################
-
# 執行方式,假設要檢查host3的備份情況:
-
# /Data/ftpuser01/scripts/backup_monitor.sh 1
-
######################################################################
-
-
#初始化備份資訊
-
. /Data/ftpuser01/scripts/backup_monitor.ini
-
-
i=$1
-
# 沒有引數,或引數大於等於陣列小標則報錯
-
if [ $# -le 0 ]
-
then
-
echo "Usage1:$0 [0,${#i_bak_object_dir_array[@]})"
-
exit 1
- elif [ $1 -ge ${#i_bak_object_dir_array[@]} ]
- then
- echo "Usage2:$0 [0,${#i_bak_object_dir_array[@]})"
- exit 2
- fi
-
-
i_info=${i_bak_object_dir_array[$i]}
-
-
#獲取備份所在的目錄
-
i_backup_dir=`echo ${i_bak_object_dir_array[$i]}|awk '{print $1}' | awk -F'=' '{print $2}'`
-
-
#獲取前一天備份大小
-
cd $i_backup_dir
-
i_lastday=`date '-d -1day' +'%Y%m%d'`
-
i_size_lastday=`du -sb ${i_lastday}* |awk '{print $1}'`
-
echo "-->1 size_lastday=$i_size_lastday" > /dev/null
-
-
#獲取當天備份大小
-
i_today=`date +'%Y%m%d'`
-
i_size_today=`du -sb ${i_today}* |awk '{print $1}'`
-
echo "-->2 size_today=$i_size_today" > /dev/null
-
-
#當天備份與前一天備份比值
-
i_size_ratio=`awk 'BEGIN{printf "%.2f\n",('$i_size_today' / '$i_size_lastday')}'`
-
-
#備份大小:今天與昨天比值小於0.1,很可能今天備份失敗。或者,今天備份大小隻有4096位元組,肯定沒有備份成功.
-
if [ $( echo "$i_size_ratio < 0.1"|bc ) -eq 1 -o $i_size_today -le 4096 ]
-
then
-
i_res=3
-
else
-
i_res=0
-
fi
-
-
echo "SystemInfo==>$i_info,size_today=$i_size_today(Bytes)"
-
- exit $i_res
[root@host1 ftpuser01]# tree /Data/ftpuser01/10.1.1.96
/Data/ftpuser01/10.1.1.96
|-- 20160105_10.1.1.96
| |-- 10.1.1.96_20160105_tar.log
| |-- backup_dir.sh
| `-- datacenter.20160105.tar.gz
|-- 20160106_10.1.1.96
| |-- 10.1.1.96_20160106_tar.log
| |-- backup_dir.sh
| `-- datacenter.20160106.tar.gz
|-- 20160107_10.1.1.96
| |-- 10.1.1.96_20160107_tar.log
| |-- backup_dir.sh
| `-- datacenter.20160107.tar.gz
`-- 20160108_10.1.1.96
|-- 10.1.1.96_20160108_tar.log
|-- backup_dir.sh
/Data/ftpuser01/10.1.1.96
|-- 20160105_10.1.1.96
| |-- 10.1.1.96_20160105_tar.log
| |-- backup_dir.sh
| `-- datacenter.20160105.tar.gz
|-- 20160106_10.1.1.96
| |-- 10.1.1.96_20160106_tar.log
| |-- backup_dir.sh
| `-- datacenter.20160106.tar.gz
|-- 20160107_10.1.1.96
| |-- 10.1.1.96_20160107_tar.log
| |-- backup_dir.sh
| `-- datacenter.20160107.tar.gz
`-- 20160108_10.1.1.96
|-- 10.1.1.96_20160108_tar.log
|-- backup_dir.sh
1、du命令
-
du -sb * 統計當前目錄下各檔案或目錄的大小,單位:Byte
-
du -s * 預設單位是KB
-
du -sh * print sizes in human readable format (e.g., 1K 234M 2G),單位是可讀性較好的方式,簡單說就是,單位自動選擇原則:
-
1)GB:大於1024MB
-
2)MB:大於1024KB小於1GB
- 3)KB:大於1024Byte小於1MB
-
比如:
-
num1=2
-
num2=3
-
num3=`expr $num1 / $num2`
-
這個時候num3=0,因為expr不支援浮點除法
-
解決的方法:
-
-
1)bc處理
-
num3=`echo "sclae=2; $num1/$num2" | bc`
-
使用bc工具,sclae控制小數點後保留幾位
-
-
2)awk處理
-
awk 'BEGIN{printf "%.2f\n",('$num1'/'$num2')}'
-
如果用百分比表示
- awk 'BEGIN{printf "%.2f%\n",('$num1'/'$num2')*100}'
-
if [ $(echo "0.15 < 0.20"|bc) -eq 1 ]
-
then
-
echo "0.15 <= 0.20"
-
else
-
echo "Error"
- fi
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1973710/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows 批處理備份目錄指令碼Windows指令碼
- centos 監控web站點是否500 指令碼CentOSWeb指令碼
- shell指令碼:監控MySQL服務是否正常指令碼MySql
- 使用Shell指令碼程式監控網站URL是否正常指令碼網站
- 備份指令碼指令碼
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- zabbix監控閱讀目錄
- rman 備份指令碼指令碼
- mysql備份指令碼MySql指令碼
- ORACLE備份指令碼Oracle指令碼
- 分享實用監控指令碼:使用Shell檢查程式是否存在指令碼
- 【shell】磁碟監控指令碼指令碼
- java WatchService監控目錄變化Java
- 自動備份指令碼指令碼
- windows mysqldump備份指令碼WindowsMySql指令碼
- WINDOWS自動打包目錄指令碼 複製到遠端備份伺服器儲存Windows指令碼伺服器
- PostgreSQL之鎖監控指令碼SQL指令碼
- expdp 邏輯備份指令碼指令碼
- 資料庫備份指令碼資料庫指令碼
- 兩套mysql備份指令碼MySql指令碼
- 監控系統告警指令碼集合指令碼
- 運維指令碼備忘錄運維指令碼
- mongo 監控備份業務賬號建立Go
- oracle自動冷備份指令碼Oracle指令碼
- MySQL中binlog備份指令碼分享MySql指令碼
- 分享Oracle Rman的備份指令碼Oracle指令碼
- 使用shell 指令碼備份資料指令碼
- ORACLE常用定時備份指令碼Oracle指令碼
- Shell 系統資訊監控指令碼指令碼
- pythonpyinotify監控檔案與目錄的變化Python
- Mysql定時備份資料指令碼MySql指令碼
- 檢查備份情況的指令碼指令碼
- 【MySQL】Xtrabackup備份及恢復指令碼MySql指令碼
- MySQL:Windows下分庫備份指令碼MySqlWindows指令碼
- windows 全量+增量備份指令碼batWindows指令碼BAT
- Linux 使用 inotify 監控檔案或目錄變化Linux
- 監控磁碟使用率的shell指令碼指令碼
- 網路卡流量監控指令碼,python實現指令碼Python
- Shell指令碼監控MySQL主從狀態指令碼MySql