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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本 每天定时进行自动备份实战脚本~~~相关的知识,希望对你有一定的参考价值。

定时备份脚本


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

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

脚本代码

[[email protected] 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 "33[32m The backup successful  33[0m"  #输出备份成功提示
fi

脚本思路解析:

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

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

[[email protected] order]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin    
[[email protected] order]# cp back-up.sh /usr/local/sbin/back-up
[[email protected] ~]# yum -y install cron*     #安装时间任务配置
[[email protected] ~]# crontab -e       #对任务配置文件进行编辑
0 4  *  *  *     back-up        #每天四点定时执行脚本 back-up 命令备份
[[email protected] 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

以上是关于shell脚本 每天定时进行自动备份实战脚本~~~的主要内容,如果未能解决你的问题,请参考以下文章

如何使用shell脚本每天自动备份mysql数据库

MySQL数据库的定时自动备份

mysql自动备份

shell脚本之定时备份文件

如何在生产环境下实现每天自动备份mysql数据库

nginx--基于crond定时服务+shell脚本实现nginx日志自动清理及备份