监控目录备份是否成功通用脚本backup_monitor.sh
2020-02-02 00:47
676 查看
1、定义要监控的主机信息 backup_monitor.ini
脚本:cat /Data/ftpuser01/scripts/backup_monitor.ini
检查原则:
1)当天备份小于4K
2)当天备份与前一天备份比值小于0.1
以上条件只要一个符合,则当天备份失败,脚本返回 1;备份成功,返回 0。
[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 4、小结:
1、du命令
脚本: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 4、小结:
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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22661144/viewspace-1973710/
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 通用的进程监控脚本process_monitor.sh使用方法
- K-Backup备份文件到共享目录
- 备份SQL Server 2005数据库到指定目录的SQL脚本
- shell备份目录脚本
- 域控是否可以用ghost备份,以及重装系统是否可以用backup的数据还原
- 利用Windows Server Backup功能备份活动目录
- shell脚本监控集群FTP是否正常,可上传下载文件
- Shell脚本:使用rsync备份文件/目录
- KVM配置TCP连接脚本 备份 libvirt-bootstrap.sh
- 脚本练习_输入用户名 检测用户是否存在 存在则检测家目录是否存在
- shell脚本判断一个目录是否为空的方法
- 实用小脚本 将写好的 sh 文件自动上传到 bin 目录
- 写一个脚本checkipadd.sh,判断所输入的参数是否为正确的IP地址,如 果是就输出"This is ip address";如果不是就输出"This is not ip address" (1
- tsm 备份的监控脚本 - cankao
- shell脚本判断文件和目录是否存在
- Shell脚本实现监控rsync数据是否传输完
- Shell脚本实现监控iptables规则是否被修改
- 很实用的sh脚本,【批量文件替换】【ssh远程命令执行】【统计某一目录下面所有文档总行数】等
- 监控服务器登录用户的操作脚本(linux下shell.sh)