shell脚本-nginx日志分割备份

shell脚本-nginx日志分割备份
https://qnimg.ffing.cn/wp-content/uploads/2022/01/image-7.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0

脚本如下:

#专用access分割日志
echo "为 nginx 的access按天分割备份脚本!"
echo "一次性分割所有日期日志,支持、年、月、日定时!"
echo "未做路径判断!未做路径记忆!"
echo "read交互不便时,请自行赋值"
#access日志路径
read -p "请输入access所在路径(绝对路径):" LOG
#LOG=/home/NGO/nginx-1.20/log/access.log

#输出目录
read -p "请输入分割后文件导出目录(绝对路径):" OUTDIR
#OUTDIR=/home/NGO/BAK/access

#Nginx程序所在路径!!!请核实路径
echo "需要nginx -s reopen 重新生成access日志使用"
read -p "请输入nginx程序所在路径(绝对路径):" NGINXPATH
#NGINXPATH="/home/NGO/nginx-1.20/sbin/nginx"




#######################   日期在第4列  (则无需修改) #######################
#10.96.20.252 - - [20/Nov/2021:00:01:41 +0800] "POST /ClientUpgrade/clientmgt/B
#日期所在列数(以空格分割,第4列就写$4,请注意是单引号)
DATEF='$4'


######以下无需修改
echo "请等待,正则进行日志分割……"

#原有log移动到LOGPATH
LOGPATH=/tmp/tmplog
mv $LOG $LOGPATH
#移动完成,重新生成日志文件
$NGINXPATH -s reopen

#获取日志名称
FILENAME=`echo $LOGPATH|awk -F "/" '{print $NF}'`
#log分离


#当前时间
NOWDATE=`date +%F_%T`
#获取日志中的日期,临时存放
TMPDATE=/tmp/tmpdate
#日期所在第4列(以空格分割)
cat $LOGPATH | grep "^[0-9]" |awk '{print '$DATEF'}'|awk -F "[" '{print $2}'|awk -F ":" '{print $1}'|sort -u >  $TMPDATE
#分割线
LINE='-'
#创建输出目录
mkdir -p $OUTDIR
#获取日志名称
FILENAME=`echo $LOG|awk -F "/" '{print $NF}'`
#for循环分割
for i in `cat $TMPDATE`
do
cd $OUTDIR
echo "正在分割 $i"
#删除日期中'/'
echo $i|sed 's#/##g' > /tmp/DMY
DDATE=`cat /tmp/DMY`

#分割
cat $LOGPATH |grep "$i" > $FILENAME$LINE$DDATE
#tar打包压缩
TAREX=.tar.gz

tar -zcf $FILENAME$LINE$DDATE$TAREX  $FILENAME$LINE$DDATE

done
echo "分割完成:输出目录:$OUTDIR"
good good study, day day up!

发表评论

textsms
account_circle
email

shell脚本-nginx日志分割备份
脚本如下: #专用access分割日志 echo "为 nginx 的access按天分割备份脚本!" echo "一次性分割所有日期日志,支持、年、月、日定时!" echo "未做路径判断!未做路径记忆!" echo "r…
扫描二维码继续阅读
2022-01-09