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 "\033[32m The backup successful  \033[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

原文地址:http://blog.51cto.com/13481789/2335254

时间: 2024-08-26 11:46:01

shell脚本 每天定时进行自动备份实战脚本~~~的相关文章

debian mysql 定时自动备份的脚本

#!/bin/sh LOG=/var/log/mysql-backup.log # mysql db info USER_ROOT=XXXXXX USER_PWD=XXXXXXX # mysql data stored dir TODAY=`date +%F` STOREDIR=/mnt/tf-card/mysql-back/$TODAY mkdir $STOREDIR echo "*** PATH:$STOREDIR mysql-backup ***" >> $LOG #

《使用shell位置变量进行目录文件的备份小脚本》

今天才发现原来位置变量也可以玩的这么爽!! 这是使用位置变量进行文件目录备份:#!/bin/bashDATE=`date +%F`  //日期以年月日输出tar czf $1.$DATE.tar.gz $1 > /dev/null 2>> /opt/$1.bak.log //打包$1变量包,将错误追加到日志中,tar打包会保留原目录,比较好if [ $? -eq 0 ]   返回值为0代表打包ok,不为0,则不okthen   #包 时间 打包ok 追加到日志        echo &

Bat脚本学习-4:Oracle自动备份还原脚本

从同事那弄到一份Oracle自动备份还原的脚本,看上去很强大,苦在bat语法不熟,查了半天文档,先弄明白了一小段 @echo off REM 在批处理中,我们可以用setloacl ENABLEDELAYEDEXPANSION这个命令来启用"延迟环境变量扩展" REM 在我们启用了"延迟环境变量扩展"后,当CMD在解释涵有嵌套格式的命令时,他会把嵌套的命令一条一条的先执行一次,然后再进行匹配操作 REM 这样我们的赋值操作就会完成.并且再"延迟环境变量扩展

Bat脚本学习-6:Oracle自动备份还原脚本

这次注释没写多少,先跳过一些吧 ::2.数据库过期备份删除 echo. echo. echo 二.正在清除过期的备份文件-- REM wscript.echo是vbs语法,相当于alert REM >是特殊字符,所以放在 for 命令里面需要使用转义符号^>,包括^&也是转义的& REM //Nologo屏弊输出:Prevent logo display: No banner will be shown at execution time for /f "tokens

Oracle 11g 数据库自动备份执行脚本

@echo offsetlocal enabledelayedexpansiontitle %date% %time:~,8% by LiaoNing Sunray Software Technology ::XXX数据库备份::定义数据库SIDset SID=orcl ::定义用户名数组(各用户间用空格分隔 例如:user1 user2 user3)set userArr=aaaset pswdArr=bbb ::指定删除天数set daysAgo=3 ::指定备份路径set filePath

用shell脚本实现MongoDB数据库自动备份

一.创建MongoDB备份目录 用来存放数据 mkdir -p /data/mongodb_bak/mongodb_bak_now mkdir -p /data/mongodb_bak/mongodb_bak_list 二.创建MongoDB数据库备份脚本 #!/bin/bash# DUMP=/usr/local/mongodb/bin/mongodump    #mongodump命令路径 OUT_DIR=/data/mongodb_bak/mongodb_bak_now    #临时备份目录

数据库自动备份压缩脚本(备份最近七天,七天之前自动删除,只保留rar文件)

把下面脚本添加到服务器计划任务中去,设置为每天执行即可,文件备份路径即为脚本所在路径,必须安装压缩文件 @echo offrem 计算指定天数之前的日期,用于后面删除指定天数的数据set DaysAgo=7set/a year=1 rem 假设系统日期的格式为yyyy-mm-ddcall :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDaysset /a PassDays-=%DaysAgo%call :DaysToDate %PassD

linux mysql自动备份删除脚本

创建备份目录       /bak/mysqlbak 编写运行脚本 vim /home/bakmysql.sh 代码: #!/bin/bash backupdir=/bak/mysqlbak time="$(date +"%Y%m%d%H%M")" /usr/local/mysql/bin/mysqldump -u XXXX(用户名) -pXXXX(密码) XXXX(数据库名称) | gzip > $backupdir/XXXX(自定义标识)$time.sql

debian mysql 定时自己主动备份的脚本

#!/bin/sh LOG=/var/log/mysql-backup.log # mysql db info USER_ROOT=XXXXXX USER_PWD=XXXXXXX # mysql data stored dir TODAY=`date +%F` STOREDIR=/mnt/tf-card/mysql-back/$TODAY mkdir $STOREDIR echo "*** PATH:$STOREDIR mysql-backup ***" >> $LOG #