shell脚本 每天定时进行自动备份回滚实战脚本~~~

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/weixin_42867972/article/details/81906835

定时备份回滚脚本


在每天设定的时间内,准时准点的对我们要备份的数据信息进行备份;正因为每天备份大量的数据信息会叠加,对我们的磁盘产生负担,为了能够减轻我们磁盘容量的负担,又能实现我们每天的数据备份;我们今天开发的脚本呢,就是为了实现这样的需求;每天实现自动备份,当备份到第五天的时候,就把第一天的备份进行删除,只备份四天的备份,以此类推。

这样做的好处既不会影响我们的备份信息,又不会给我们的磁盘造成负担…

脚本代码

[root@server10 order]# vim back-up.sh 
#!/bin/bash
#用途:备份数据并删除过期的数据
#联系方式:https://blog.csdn.net/weixin_42867972
#开发者:酋长rosen
#版本号:2.0.10

cd /      #回到根目录才能实行绝对路径的备份
        path="/test/etc-bak"    #备份到对应目录下
        way="/etc"              #需要备份的路径
        con="etc"               #变量命名
        tar -zvcf /test/etc-bak$way.`date +%F`.tar.gz $way >/dev/null 2>>/root.sh
                #对文件进行性备份,备份的目录内容是/etc
        num=`ls -l $path | grep -E "\<$con\>\..*\.tar.gz$" | wc -l`  #统计文件的数量
if [ $num -gt 4  ]  #判断是否为四个文件
then
  rm -rf $path/`ls -l $path | grep "\<$con\>\..*\.tar.gz$" | head -n 1 | awk '{print $NF}' | xargs`
        #删除前一天的备份文件
        echo -e "\033[32m The backup successful  \033[0m"  #输出备份成功提示
fi

脚本思路解析:

1、定义变量 “way” 里面的是所备份的绝对路径, "con" 是方便对命名为 etc 文件的查找而赋值变量
2、对目标文件目录进行打包,以打包的文件加日期规范命名,如果备份不成功那就把错误信息汇报到 /root.sh文件下,方便我们查阅
3、对我们的备份进行数量统计,在我们规定的数量以内(目前规定是四个,可根据需求来定)
4、如果超过了四个,脚本就会执行操作并排序,对当天的文件备份的同时会把排在最前的备份文件进行删除操作
5、如果没有超过四个,备份一样会执行,但是删除操作不会执行

如果没有安装时间任务配置的话先安装时间任务配置,没有时间配置文件是无法执行的。
设定好时间,脚本在每天凌晨的四点钟执行自动备份。

[root@server10 order]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin    
[root@server10 order]# cp back-up.sh /usr/local/sbin/back-up
[root@server10 ~]# yum -y install cron*        #安装时间任务配置
[root@server10 ~]# crontab -e      #对任务配置文件进行编辑
0 4  *  *  *     back-up        #每天四点定时执行脚本 back-up 命令备份
[root@server10 etc-bak]# ls     #完成备份后察看备份的路径下内容
etc.2018-08-18.tar.gz  etc.2018-08-19.tar.gz  etc.2018-08-20.tar.gz  etc.2018-08-21.tar.gz

本章节写的是文件的自动备份脚本,脚本会对每天会在特定的时间内对我们设置好的目标文件进行备份,具体需要备份哪个目录文件要根据需求来定,备份文件在数量在什么范围内也是通过需求确定。

猜你喜欢

转载自blog.csdn.net/weixin_42867972/article/details/81906835