文档章节

 监控目录备份是否成功通用脚本

小祁1124
 小祁1124
发布于 2016/07/14 13:51
字数 753
阅读 2
收藏 0
点赞 0
评论 0

 监控目录备份是否成功通用脚本backup_monitor.sh 2016-01-08 11:17:54

分类: Linux

 

1、定义要监控的主机信息 backup_monitor.ini
脚本:cat /Data/ftpuser01/scripts/backup_monitor.ini

  1. ####################################################################################
  2. # 备份目录解析:
  3. # BackupDir=/Data/ftpuser01/10.1.4.48 备份服务器上的路径,对应主机host3的备份上传路径。
  4. # private_ip=10.1.1.96 用内网标识主机IP地址。
  5. # hostname=host3 主机名
  6. # SourceDir=/Data/jenkins/system,Kafka-Consumer 源主机要备份打包的目录 
  7. ####################################################################################
  8.  
  9.  
  10. #定义要备份的目录全路径 
  11. declare -a i_bak_object_dir_array=(
  12.   "BackupDir=/Data/ftpuser01/10.1.1.96 hostname=host1 private_ip=10.1.1.96 SourceDir=/datacenter" 
  13.   "BackupDir=/Data/ftpuser01/10.1.2.67 hostname=host3 private_ip=10.1.2.67 SourceDir=/datacenter" 
  14.   "BackupDir=/Data/ftpuser01/10.1.4.48 hostname=host3 private_ip=10.1.4.48 SourceDir=/Data/jenkins/system,Kafka-Consumer" 
  15.   "BackupDir=/Data/ftpuser01/10.1.1.86 hostname=host4 private_ip=10.1.1.86 SourceDir=/Data/verComponent" 
  16. )

2、检查当天备份与前一天备份大小(通用)
 检查原则:
  1)当天备份小于4K
  2)当天备份与前一天备份比值小于0.1
 以上条件只要一个符合,则当天备份失败,脚本返回 1;备份成功,返回 0。

  1. #!/bin/sh
  2.  
  3. ######################################################################
  4. # 执行方式,假设要检查host3的备份情况:
  5. # /Data/ftpuser01/scripts/backup_monitor.sh 1 
  6. ######################################################################
  7.  
  8. #初始化备份信息
  9. . /Data/ftpuser01/scripts/backup_monitor.ini 
  10.  
  11. i=$1
  12. # 没有参数,或参数大于等于数组小标则报错
  13. if [ $# -le 0 ]
  14. then
  15.   echo "Usage1:$0 [0,${#i_bak_object_dir_array[@]})"
  16.   exit 1
  17. elif [ $1 -ge ${#i_bak_object_dir_array[@]} ]
  18. then
  19.   echo "Usage2:$0 [0,${#i_bak_object_dir_array[@]})"
  20.   exit 2
  21. fi
  22.  
  23. i_info=${i_bak_object_dir_array[$i]}
  24.  
  25.  #获取备份所在的目录
  26. i_backup_dir=`echo ${i_bak_object_dir_array[$i]}|awk '{print $1}' | awk -F'=' '{print $2}'`
  27.  
  28.  #获取前一天备份大小
  29. cd $i_backup_dir
  30. i_lastday=`date '-d -1day' +'%Y%m%d'`
  31. i_size_lastday=`du -sb ${i_lastday}* |awk '{print $1}'` 
  32. echo "-->1 size_lastday=$i_size_lastday" > /dev/null
  33.  
  34.  #获取当天备份大小
  35. i_today=`date +'%Y%m%d'`
  36. i_size_today=`du -sb ${i_today}* |awk '{print $1}'` 
  37. echo "-->2 size_today=$i_size_today" > /dev/null
  38.  
  39.  #当天备份与前一天备份比值
  40. i_size_ratio=`awk 'BEGIN{printf "%.2f\n",('$i_size_today' / '$i_size_lastday')}'`
  41.  
  42. #备份大小:今天与昨天比值小于0.1,很可能今天备份失败。或者,今天备份大小只有4096字节,肯定没有备份成功. 
  43. if [ $( echo "$i_size_ratio < 0.1"|bc ) -eq 1 -o $i_size_today -le 4096 ] 
  44. then
  45.   i_res=3
  46. else
  47.   i_res=0
  48. fi
  49.  
  50. echo "SystemInfo==>$i_info,size_today=$i_size_today(Bytes)" 
  51.  
  52. exit $i_res

3、目录示例

[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命令

  1. du -sb * 统计当前目录下各文件或目录的大小,单位:Byte
  2. du -s * 默认单位是KB
  3. du -sh * print sizes in human readable format (e.g., 1K 234M 2G),单位是可读性较好的方式,简单说就是,单位自动选择原则:
  4.   1)GB:大于1024MB
  5.   2)MB:大于1024KB小于1GB
  6.   3)KB:大于1024Byte小于1MB

2、浮点数计算

  1. 比如:
  2. num1=2
  3. num2=3
  4. num3=`expr $num1 / $num2`
  5. 这个时候num3=0,因为expr不支持浮点除法
  6. 解决的方法:
  7.  
  8. 1)bc处理
  9. num3=`echo "sclae=2; $num1/$num2" | bc`
  10. 使用bc工具,sclae控制小数点后保留几位
  11.  
  12. 2)awk处理
  13. awk 'BEGIN{printf "%.2f\n",('$num1'/'$num2')}'
  14. 如果用百分比表示
  15. awk 'BEGIN{printf "%.2f%\n",('$num1'/'$num2')*100}'

3、浮点数比较

  1. if [ $(echo "0.15 < 0.20"|bc) -eq 1 ]
  2. then
  3.   echo "0.15 <= 0.20"
  4. else
  5.   echo "Error"
  6. fi

本文转载自:http://blog.itpub.net/22661144/viewspace-1973710/

共有 人打赏支持
小祁1124
粉丝 15
博文 77
码字总数 18220
作品 0
海淀
程序员
rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性、可靠性、时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时...

翘楚秦歌 ⋅ 2017/06/13 ⋅ 0

Oracle备份还原实践

一、项目背景: 1.1 客户需求: 将物理机房生产环境的Oracle/MySQL及阿里云的RDS数据库备份出来,存储到一个集中数据库存储服务器,实现异地备份,并且在还原环境内要将MySQL/Oracle以及阿里...

KaliArch ⋅ 2017/11/01 ⋅ 0

搭建一个高可用负载均衡的集群架构(第一部分)

笔记内容:使用15台机器搭建一个高可用负载均衡的集群架构(第一部分) 笔记日期:2017.12.14 —— 2017.12.16 业务需求 用15台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,...

ZeroOne01 ⋅ 2017/12/20 ⋅ 0

rsync+nfs+inotify

rsync:备份服务和scp差不多但是不同的是rsync是增量备份而scp是全量备份,更加节省磁盘。(备份服务器(数据库文件,全网重要文件 )) 好处:增量备份 缺点:大文件传输存在瓶颈 --------...

shuai12138 ⋅ 2017/03/08 ⋅ 0

rsync+nfs+inotify

rsync:备份服务和scp差不多但是不同的是rsync是增量备份而scp是全量备份,更加节省磁盘。(备份服务器(数据库文件,全网重要文件 )) 好处:增量备份 缺点:大文件传输存在瓶颈 --------...

shuai12138 ⋅ 2017/03/08 ⋅ 0

Rsync+Inotify-client 实现实时同步

在前面的博文实践记录之-Rsync镜像备份介绍了镜像备份工具Rsync的安装和使用.但在大数据时代,rsync的不足之处也暴露出来. 首先.rsync本身实现不了实时备份.靠系统的crontab实现的话也受...

乜波 ⋅ 2014/07/16 ⋅ 0

CentOS下(rsync+inotify)监听式实现服务器间备份的实时同步

背景 前几天,整理了一篇 (rsync+crontab) 实现文件同步的文章,不过从网上得知,网上很多言论认为在优势上不如监听实现的效果,所以在此进行新的配置尝试,同时建议可以对比两篇文章进行参考...

moTzxx ⋅ 2017/12/06 ⋅ 0

rsync+inotify实现服务器之间文件实时同步

之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时、不停的产...

chaun ⋅ 2016/04/27 ⋅ 0

linux备份脚本(以web为例)

linux服务器中要定期对某一块东西自动备份很有必要,这时就要用到shell脚本来写啦。这里以备份Apache服务器为例,为了方便演练,这里用的Apache是用yun安装的,如果想对源码安装的Apache做自...

任小为 ⋅ 2014/07/23 ⋅ 0

利用ssh+rsync+inotify实现数据的异地实时同步

在服务器中,通常结合计划任务、shell脚本来执行本地备份。为了进一步提高备份的可靠性,使用异地备份也是非常重要的,利用rsync工具,可以实现快速、高效的异地备份。本篇博客将配置rsync+c...

杨书凡 ⋅ 01/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

nodejs __proto__跟prototype

前言 nodejs中完全没有class的这个概念,这点跟PHP,JAVA等面向对象的语言很不一样,没有class跟object的区分,那么nodejs是怎么样实现继承的呢? 对象 对象是由属性跟方法组成的一个东西,就...

Ai5tbb ⋅ 昨天 ⋅ 0

Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库

Q: Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库 A: 执行以下2条命令解决: apt-get install php-mysql service apache2 restart php -m 执行后会多以下4个模块: mysqli mysqlnd...

SamXIAO ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部