Shell脚本写的备份还原工具 –reset.sh

reset.sh脚本分两个功能模块,备份模块和还原模块;
备份:备份指定文件到当前目录,以备份时日期做为文件名
还原模块:可选择性的还原指定时间的备份记录

  • 前言:

这周在学习Shell脚本编程,学习用到测试环境是Centos6和Centos7,老师建议我们写一个reset.sh 脚本可以实现系统环境一键还原系统工作环境,可以避免将来重装系统后繁杂的配置,我就用目前学习的知识自己编写了一个工具,reset.sh,可以实现交互式的备份还原当前系统的配置文件,由于没有学习到循环和功能调用,部分代码可能不够精简,实现方法也有点笨,等到学到新技术后,再来更新脚本。

  • 设计思路

  1. 所有的配置备份文件继承统一的命名规则,NAME.bak_VERSION
    NAME:需要备份的配置文件的名称。
    VERSION:系统的版本信息,方便脚本中变量赋值。
  2. 运行脚本,会自动创建备份目录,文件的备份路径默认是在程序运行的当前目录创建备份文件夹,命名规则cfg_back_VERSION
  3. 脚本中记录了需要备份的配置文件的路径信息,每次执行脚本都会将这些文件,保存到cfg_backup_VERSION/YY-MM-DD—HH-mm-ss/中,文件夹的名称为当前时间。
  4. 脚本执行可以交互式的恢复备份文件中指定日期的配置备份文件。
  • 程序功能展示

  1.   功能选择界面

1222222222222222

2333333333333333

1)用户可随意自行DIY自己的个性LOGO,颜色每次登陆随机改变。

2)用户可根据自己的操作需求,输入1或者2,来决定是要备份还是还原系统配置。

3)对于个别英语不好或者手爱抖的同学和朋友,我们还特意设置了亲切友好的翻译交互方式!

 2.配置备份模块

beifeng

bfffffffffff

1)如果你选择了2,并且回车了,你会发现程序并没有执行,光标会在这里等待你9秒(纠结症和手残党的福音)直到你再此敲击回车,或者等到9秒后备份开始执行。

2)程序执行后会提醒你开始备份,和结束备份,而且将备份文件的绝对路径信息通过绿颜色标注出来,每个文件是否备份完成也会提醒。

3.配置还原模块

huanyuan

laobai

1)如果你选择了1,那么你会发现许多你曾经备份过的文件被列了出来,你可以选择其中一个你想要恢复回去的日期,输入行前面的数字,当然如果你不按要求输入数字,

依然会得到亲切友好的提醒的哦,中英文双翻!!

2)输入正确数字,回车后,会看到开始配置,和配置完成的提醒,配置过的文件也时用绿色标出,成败一目了然。这里有一个后台操作,界面是不显示的,脚本在还原配置之前会提前把目前系统的配置做一个备份,然后再执行还原,这样防止误操作带来的不可逆损失!

chenggongl

  • 脚本展示

1.首先进行变量声明,将系统中用到的变量提前解释,因为我写的脚本我回头看都看不懂!!Centos6 和7 的网卡名称不一样,所以这里分别进行提取赋值给N1和N2,

dm1

2.常量声明中,定义了要备份文件的绝对路径信息,还有那个“亲切问候语”库;

i用来产生随机数,依次和1到6进行比较,进而给JOKE赋值,JOKE会在后面登陆错误提示信息处被打印;这里实现也可以用循环!

dm2

3.个性化LOGO设计;每一行颜色都是随机产生的。

下面是登陆信息提示,首先判断用户输入值是否是数字,然后再判断是否大于2;如果不合理输出对应的提示语,外加上随机的一句JOKE!

dm3

4.脚本里有两部分内容,没学到调用功能,只会顺序执行,想了个办法就是给命令行前加注释#,定义了两个变量 Reset 和 Backup通过用户输入的值,给对应的参数赋值,来注释掉对应的行。

这里通过ls  -dtl 和 sed 分别把文件名按修改时间排序,将文件名剪切了出来。但是不知道如何给行加行号,就重定向了一个temp临时文件中,用完后删除temp文件。

dm4

 

5.为防止用户误操作,每次还原前,都是提前备份的,这里出现一个问题,Reseth和Backup被替换成#后,系统默认将他识别为命令,会报错,所以用了错误重定向,将报错除去。

dm5

  • 后言

  1. 哈哈,一个Shell 初学者写的玩的,程序员都时复杂的功能简单做,会的不多,只能简单的功能复杂做了,不过是在学习嘛,我觉得总结知识最有效的方法就是用一用,这个脚本基本上用上了老师讲的一些编写脚本的知识,虽然功能简单,却也调试了好几天!!代码也有几行,不断累积到了一百多行!不断有错误,也不断有新的想法,那种有想法就能克服各种困难,实现的感觉还是很棒的!
  2. 一开始我是写了两个脚本的,一个备份用,一个还原用,想整合成一个,但是功能调用还没学,就想了个在行首赋值#的想法,,报错,脚本不足的地方很多,比如很多地方可以用循环来简化,功能调用等。

3.那么问题来了,你一定会问怎么确认备份没问题,我的回答是,我也不知道,哈哈,不够我都做过测试了,但是可能还有别的错误,等待大家来发现,欢迎批评指正。

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95959

发表评论

登录后才能评论

评论列表(1条)

  • M30-Alvin阿峰
    M30-Alvin阿峰 2018-04-14 22:16

    很好很强大,特别是配图,哈哈哈

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班