AIX获取N天前系统日期及应用日志备份脚本

#!/usr/bin/ksh

#####################################################################################
#备份内容:/home/afa/log/ 下当天日期文件下所有内容 如:20130101                     #
#备份频率:每天凌晨两点打包压缩1天前日志至文件/filelog下,并将五天前日志文件夹删除  #
#由运行保障部将当日产生的gz压缩文件备份至磁带库                                     #
#/filelog下压缩文件保存一个月,备机应用日志保存三个月                               #
#备份文件名:yyyymmdd.tar.gz                                                        #
#备份路径:/filelog                                                                 #
#####################################################################################
export log

#######################################################
#get_date默认取前一天日期,可加参数
#例 取五天前日期: 
#get_date 5
#######################################################
function get_date
{
    #当前年份
    year=`date +%Y`
    #当前月份
    month=`date +%m`
    #当前日期
    day=`date +%d`
    #默认取前1天日期
    if [ $# -eq 1 ];then
        if [ $1 -lt 20 -a $1 -gt 0 ];then
            num_days=$1
        else
            exit 
        fi
    else
        num_days=1
    fi
    day=$(($day - $num_days ))
    #判断日期是否是上个月
    if [ $day -le 0 ];then
        month=$(($month -1))
        if [ `expr length ${month}` -eq 1 ];then
        month="0"${month}
        fi
        if [ $month -eq 0 ];then
            month=12
            year=$(($year -1))
        else
            case $month in
            01|03|05|07|08|10|12)day=$((31-$(( $num_days  - `date +%d`)) ));;
            04|06|09|11)day=$(( 30-$(( $num_days - `date +%d`)) ));;
            02)
            if [ $(($year%4)) -eq 0 ];then
                if [ $(($year%400)) -eq 0 ];then
                    day=$((29-$(( $num_days - `date +%d`)) ));
                fi
                if [ $(($year%100)) -eq 0 ];then
                    day=$((28-$(( $num_days - `date +%d`)) ));
                else
                    day=$((29-$(( $num_days - `date +%d`)) ));
                fi
            else 
                day=$((28-$(( $num_days - `date +%d`)) ));
            fi
            ;;
            esac
        fi
    fi
    #获取日期
    if [ `expr length ${year}${month}${day}` -eq 7 ];then
         new_date=${year}${month}"0"${day};
    else
         new_date=${year}${month}${day};
    fi
    echo $new_date
    return new_date
}


#获取1天前日期
get_date 1
date_1=${new_date};
#获取5天前日期
get_date 5
date_5=${new_date};
#获取相应文件
dir_1="/home/afa/log/"${date_1};
dir_5="/home/afa/log/"${date_5};
new_dir="/filelog";


if [ -d "${dir_1}" ];then              
    cd /home/afa/log
    #将当天的日志文件夹压缩打包至/filelog
    tar -cf ${dir_1}"_bak.tar" ${dir_1}
    if [ $? -eq 0 ];then 
        gzip -9 ${dir_1}"_bak.tar"
        rm -rf ${dir_1}"_bak.tar"
        mv ${dir_1}"_bak.tar.gz" ${new_dir}
        #五天前的文件夹删除
        rm -rf ${dir_5}
    fi 
else
    echo "${dir_1},该文件不存在"
fi

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值