#!/bin/bash
#auth morb
#date 20190606
#打包前一天的日志,并且清除30天前的日志压缩包
#打包日期格式,获取一天前日期
OLDDATE=`date -d '-1 days' +%Y-%m-%d`
OLDDATES=`date -d '-1 days' +%Y-%m-%d-%H%M%S`
SHELL_NAME="$0"
SHELL_DIR="/server/scripts"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%H-%M-%S")
echo "========================" >> ${SHELL_LOG}
#脚本日志记录
writelog(){
LOGINFO=$1
echo "${CDATE} ${CTIME}: ${SHELL_NAME} : ${LOGINFO}" >> ${SHELL_LOG}
}
#日志文件目录
mk_logdir(){
LOGDIR="/logs/gdmz"
if [ ! -d $LOGDIR ];then
mkdir -p $LOGDIR
fi
if [ $? -ne 0 ];then
exit
fi
writelog "创建日志文件目录===》done";
}
#日志备份目录
mk_bak_logdir(){
LOGBAKDIR=/logs/oldlogs/$OLDDATES
if [ ! -d $LOGBAKDIR ];then
mkdir -p $LOGBAKDIR
fi
if [ $? -ne 0 ];then
exit
fi
writelog "创建日志备份目录===》done";
}
#将日志文件移动到备份目录,并打包,删除原文件
mv_tar_rm_logdir(){
mv $LOGDIR/*${OLDDATE}.log $LOGBAKDIR
if [ $? -ne 0 ];then
exit
fi
cd /logs/oldlogs
tar -zcvf ${OLDDATES}.tar.gz $OLDDATES
if [ $? -eq 0 ];then
rm -rf $OLDDATES
fi
if [ $? -ne 0 ];then
exit
fi
writelog "日志文件移动到备份目录,并打包,删除原文件录===》done";
}
#删除30天前的历史日志压缩文件
rm_log_tar_gz(){
find /logs/oldlogs -name "*.tar.gz" -mtime +30 |xargs rm -rf
if [ $? -ne 0 ];then
exit
fi
writelog "删除30天前的历史日志压缩文件===》done";
}
main(){
mk_logdir;
mk_bak_logdir;
mv_tar_rm_logdir;
rm_log_tar_gz;
}
main $1
==================
效果:
[root@test scripts]# tail -f 2.sh.log
========================
2019-06-06 01-02-16: 2.sh : 创建日志文件目录===》done
2019-06-06 01-02-16: 2.sh : 创建日志备份目录===》done
2019-06-06 01-02-16: 2.sh : 日志文件移动到备份目录,并打包,删除原文件录===》done
2019-06-06 01-02-16: 2.sh : 删除30天前的历史日志压缩文件===》done
网友评论