您的位置:首页 > 大数据 > 人工智能

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

2014-08-06 20:15 1071 查看
#!/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  aix 脚本