俗话说的好:“真男人从来不回滚”,但是家中常备一个回滚脚本也是很有必要的,我所在公司的服务器模块名都是在初始化的时候写进/etc/role_install这个文件里,如下图的这个服务器就是fss服务器:

再比如下面这个服务器,虽然包含nginx的组件但是httpproxy的服务器:

那么有了这样的前提,整个回滚的脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
#Written by ChrisChan @July-4th-2017
#Desription:这是一个回滚的脚本。
module=$(cat /etc/role_install |grep -v zkclient|grep -v nginx)
echo -e '\033[31m现在将执行回滚操作,本次回滚只回滚普通模块,不包含nginx和zkclient!\033[0m' 
echo "回滚的模块名称:"$module
echo -e '\033[33m如果想取消回滚操作,请ctrl+c立即停止本脚本...\033[0m'
sleep 5
cd /dxpbackup/hswx/$module && zip $module.zip -x "*og*" -r .    #到备份的文件夹里去压缩
mv /dxpbackup/hswx/$module/$module.zip /mnt/hswx    
echo $module".zip文件已经生成!"
until "$decision" == "Y" -o "$decision" == "y" -o "$decision" == "N" -o "$decision" == "n" ]
do
        read -p "请问是否用回滚的压缩包覆盖到/mnt/hswx下?(y/n)" decision
        echo "您的选择是:"$decision
        if [ $decision == Y -o $decision == y ]
                then
                        echo "现在已经开始覆盖..."
                        rm -rf /mnt/hswx/$module    #先把原来的内容删除
                        unzip /mnt/hswx/$module.zip -d /mnt/hswx/$module    #重新解压缩进去
                        echo -e '\033[32m覆盖已经完成,可以直接执行/startall脚本!\033[0m'
        elif [ $decision == N -o $decision == n ]
                then
                        echo -e '\033[32m生成的'$module'.zip文件保存在/root文件夹里\033[0m'
        else
                echo -e '\033[31m输入字符不符合!请重新输入!\033[0m'
        fi
done

新的知识点!

1)zip在压缩文件夹的时候要过滤掉某些文件使用“-x”参数,比如说要在AAA文件夹里面过滤掉abc和jqk这两个文件,那么语句就是#zip AAA.zip -x "abc" -x "jqk" -r . 或者是 #zip -r -x=abc -x=jqk AAA.zip . 这样两个语句。

如果你要过滤掉的是一个文件夹,比如那么就要在文件夹后面名字加上一个*,下图就是要压缩整个auc文件夹为456.zip但是又不想要lib这个文件夹,就使用了#zip 456.zip -x "lib*" -r .

不过如果文件夹里还有其他lib开头的文件夹也会被过滤掉,这一点要注意。

2)本shell里面涉及了逻辑判断,而[[ 和 [ 的区别如下图:

3)如果if语句中出现报错“[: too many arguments”,很有可能就是字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断时,无法知道该获取哪个值,所以最好都用双引号括起来;

4)如果是“变量a等于aa且变量b等于bb  或者 变量c等于cc且变量d等于dd ” 这样的判断句怎么写?答曰:

[ $a = "aa" -a $b = "bb" ] || [$c = "cc" -a $d = "dd" ]

参考资料:https://zhangge.net/4776.html

最后的最后,如果您觉得本文对您升职加薪迎娶白富美有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多优秀的博文!

本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1944756

工作所用的模块回滚脚本相关推荐

  1. Jenkins:参数化构建:多分支|多模块|回滚|打印日志

    Jenkins:参数化构建:多分支|多模块|回滚|打印日志 多分支 安装Git Parameter Plug-In 配置参数 选择构建分支 分模块 前提 分模块build 参数配置 分模块shell脚 ...

  2. ORACLE 回滚段详解

    ORACLE 回滚段   回滚段概述  回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头部包含正在使用的该回滚段事务的信息.一个事务只能使用一个回滚段来存放它的回滚信息,而一个 ...

  3. mysql的回滚段_ORACLE 回滚段详解

    ORACLE 回滚段 回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头部包含正在使用的该回滚段事务的信息.一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段 ...

  4. jenkins结合ansible用shell实现自动化部署和回滚

    最近用jenkins+gitlab+ansible做持续化集成,自动化部署和版本回滚.然而deploy plugin没能做到增量升级和回滚操作,折腾了很久决定自己写个脚本来简单实现. 环境: cent ...

  5. mysql的回滚机制_mysql事务回滚机制概述

    应用场景: 银行取钱,从ATM机取钱,分为以下几个步骤 1 登陆ATM机,输入密码: 2 连接数据库,验证密码: 3 验证成功,获得用户信息,比如存款余额等: 4 用户输入需要取款的金额,按下确认键: ...

  6. tomcat自动化部署(拉取\备份、部署、更新、回滚)

    一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打一个压缩包,rz上去:解压 2.缺点 ...

  7. MySQL中事务的提交和回滚机制

    应用场景: 银行取钱,从ATM机取钱,分为以下几个步骤 1 登陆ATM机,输入密码: 2 连接数据库,验证密码: 3 验证成功,获得用户信息,比如存款余额等: 4 用户输入需要取款的金额,按下确认键: ...

  8. python实现数据库事务回滚_使用Python脚本实现MySQL误操作的快速回滚

    1.简介 在Oracle数据库中,当一个误操作被提交后,我们可以通过Oracle提供的闪回功能将表闪回至误操作之前的状态.mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是 ...

  9. python logging模块-写日志、log回滚

    python包/模块,专栏总目录: 1.python自定义模块 2.python模块调用顺序 3.python logging模块 4.python定义跨模块的全局变量 1.logging模块简介 l ...

最新文章

  1. java collections_Java集合基础的详细介绍(二)
  2. springmvc配置DispatcherServlet拦截url注意事项
  3. Wannafly交流赛1 B 硬币[数学思维/贪心]
  4. 当MyBatis 3.5.X遇上JDK8竟然出现了性能问题,全项目组都得加班~
  5. 【新产品发布】《EVC8021 RS-232RS-485/422 隔离接口转换器》
  6. 什么是宇宙安全声明_《三体》三体人是否知道如何向宇宙发表安全声明?
  7. 机器学习之决策树熵信息增量求解算法实现
  8. linux 显卡驱动程序,NVIDIA为Linux发布重大驱动程序升级
  9. 动态规划____编辑距离
  10. react18新特性
  11. java7723魂斗罗2_魂斗罗3代-完全版
  12. 学会这27种编程语言,你还怕找不到女朋友?!那是要几个有几个!
  13. APP试玩应用如何赚钱?今天它来了!新手教程【建议收藏】
  14. C-DOCSIS PHS,服务组
  15. 看了就懂了,LCD拼接屏、LED显示屏、OLED显示屏三者的区别!
  16. JQuery获取当前元素本身
  17. 软件技术基础知识复习
  18. 论文笔记:Federated Graph Neural Networks: Overview, Techniques and Challenges
  19. *内存泄漏和内存溢出
  20. js网页导出excel表格文件

热门文章

  1. c语言switch comiti,国际经济学作业复习资料第三章.docx
  2. 有人不会使用计算机的反义,现代汉语练习题及答案
  3. js百度地图android定位不准,百度地图js定位不准
  4. 创建mysql数据库图解_mysql数据库怎么创建外键?(图文+视频)
  5. linux内存分配器类型,内核早期内存分配器:memblock
  6. java矩阵类_151-矩阵类
  7. oracle 存储过程设置回滚点,(转)oracle 存储过程事宜使用断点回滚 -savepoint
  8. 【算法篇】八种内排序算法
  9. VS2017安装配置Qt
  10. ambari mysql jar_从零开始安装 Ambari (3) -- 安装 Ambari