shell脚本日志回滚(完整代码)

前言

当前脚本用于对于某个日志文件的 回滚,可备份日志文件,可存储多个
假设 日志名称
temp.log
备份日志名称
temp.log.1 \
temp.log.2 \
temp.log.3 \
temp.log.4 \

总日志个数 设定为6个(1个日志,5个备份日志)
单个日志大小 大于 500K 时,自动备份
日志路径 设定为 /tmp/temp.log

以上配置均可自己适配

shell脚本如下

cat /home/qxy/shell/RollBack.sh

#!/bin/bash
# ----------------------------------------------------
# > File Name: Rollback.sh
# > Author: qxy
# > Created Time: Sun 17 Mar 2024 02:08:01 AM UTC
# > Modified Time:Sun 17 Mar 2024 03:58:50 AM UTC
# ----------------------------------------------------

# 当前脚本为 日志回滚脚本
# 日志名称为 
#       temp.log
# 备份日志名称为  
#       temp.log.1 \ 
#       temp.log.2 \ 
#       temp.log.3 \ 
#       temp.log.4 \ 
#       ...
# 总日志个数 设定为6个(1个日志,5个备份日志)
# 日志大小大于 500K 时,自动备份
# 日志路径 设定为 /tmp/temp.log

PATH_NAME="/tmp/temp.log"
FILE_MAX_NUMS=6
FILE_MAX_SIZE=500*1024

if [ -s $PATH_NAME ]; then
    # echo "FILE is exixt"
    FILE_SIZE=`wc -c $PATH_NAME | awk {'print $1'}`
    # echo "file size $FILE_SIZE"
    if (($FILE_SIZE >= FILE_MAX_SIZE)); then
        # echo "file sieze > $FILE_MAX_SIZE!!!"
        # 获取文件个数
        FILE_NUMS=`ls -l $PATH_NAME* | wc -l`
        # echo "file nums is $FILE_NUMS"
        # 判断文件个数 是否超过 设定值,如果超出 删除 temp.log.6
        if (($FILE_NUMS >= $FILE_MAX_NUMS)); then
            # echo "file nums > $FILE_MAX_NUMS"
            ((FILE_MAX_NUMS--))
            rm -rf $PATH_NAME.$FILE_MAX_NUMS
        fi
        # 根据文件个数,由后往前 mv 重命名
        ((FILE_NUMS--))
        FILE_NUMS_OLD=$FILE_NUMS
        ((FILE_NUMS--))
        while [ $FILE_NUMS -gt 0 ]; do
            mv $PATH_NAME.$FILE_NUMS $PATH_NAME.$FILE_NUMS_OLD
            ((FILE_NUMS--))
            ((FILE_NUMS_OLD--))
        done
        # mv temp.log
        mv $PATH_NAME $PATH_NAME.1
        echo " Rollback completed "
    else
        echo "File < $FILE_MAX_SIZE...wait..."
    fi
else
    echo "File $PATH_NAME is No exixt or File is empty"
fi

添加脚本到定时任务中

cron.d 目录下文件添加

/etc/cron.d/ 目录下创建文件,也可以直接在 /etc/crontab 文件中直接添加(不太推荐)

文件内容格式如下

vi /etc/cron.d/RolBack

# Example of job definition:
# .---------------- minute (0 - 59)		间隔*分钟执行一把
# |  .------------- hour (0 - 23)		间隔*小时执行一把
# |  |  .---------- day of month (1 - 31)	每个月的*天执行一把
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...	每年的*月执行一把
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR 	sun,mon,tue,wed,thu,fri,sat		每周的周*执行一把
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
*/1 *    * * *   root    /home/qxy/shell/RollBack.sh > /dev/null 2>&1
# 每分钟执行一次

重启cron服务

由于Cron 是Linux的内置服务,cron服务控制:

/sbin/service crond start 	#启动服务
/sbin/service crond stop 	#关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload 	#重新载入配置

– end –

1. 上线前的备份工作: 按日期生成上线记录文件夹 文件结构目录和正式环境保持一致 备份你所涉及到的修改文件 2. 上线前的准备工作: 把你修改到的patch文件 到 PATCH_ROOT 目录中 文件结构目录和正式环境保持一致 3. 上线工作: diff -r -b 比较 备份环境 和 布环境 文件差异; 再次确定修改是否正确 PATCH_ROOT 下的文件夹和文件 布到正式环境 即可; 完成上线后,要检查系统功能是否正确。 4. 回滚工作: BAK_ROOT 下的文件夹和文件 回滚到正式环境 即可 ; 完成回滚后 要检查系统功能是否正确回滚。 5. shell脚本功能: === 参数配置 ===: #指定正式环境的路径 正式环境的文件 WEB_ROOT=/var/www/html echo ${WEB_ROOT} #指定布环境的路径 布环境的文件 PAT_ROOT=/home/chenlong/blog echo ${PAT_ROOT} #指定布管理日志的路径 记录布过程,完成文件备份和文件patch PUB_ROOT=/home/chenlong/Publish === 使用方法 ===: #./apply.sh blog /home/chenlong/patch_sh/list20100520.txt 例如 -bash-3.2$ ./apply.sh blog /home/chenlong/patch_sh/list20100520.txt /var/www/html /home/chenlong/blog /home/chenlong/Publish blog /home/chenlong/patch_sh/list20100520.txt /home/chenlong/patch_sh === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/wp-includes/js/common.js === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/upload_editor.php /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/upload_editor.php /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/upload_editor.php === cmd === :/home/chenlong/patch_sh/apply_cp.sh /var/www/html/BM/Tpl/default/Admin/Img/index.php /home/chenlong/Publish/blog/2010-05-21/bak /bin/cp /var/www/html/BM/Tpl/default/Admin/Img/index.php /home/chenlong/Publish/blog/2010-05-21/bak/var/www/html/BM/Tpl/default/Admin/Img/index.php === cmd === :/home/chenlong/patch_sh/apply_cp.sh /home/chenlong/blog/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/patch /bin/cp /home/chenlong/blog/wp-includes/js/common.js /home/chenlong/Publish/blog/2010-05-21/patch/home/chenlong/blog/wp-includes/js/common.js === cmd === :/home/chenlong/patch_sh/apply_cp.sh /home/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值