随记:nginx当开启日志记录时,只要有web资源访问就会有访问记录产生,access.log就会持续增长,所以需要进行日志切割,让nginx重新写入新的日志文件,由于之前未对网站未进行日志切割,导致之在做了日志切割后,第一次的日志量过大,统计较为困难,因此就有了它


#!/bin/bash

#定义日志文件名称
LOG_FILE='hanjy_access.log-2022-05-18.gz'

#后续变量替换引用分隔符
Fs=-

#日志保存路径
OLD_FILE=/www/wwwlogs/backup

#清空并生成临时文件
>./tmp_file.txt

#取出日志中日期并保存到临时文件中
zcat ${OLD_FILE}/${LOG_FILE}|awk -F"[[ :]+" '{date[$4]++} END {for (i in date){print i}}'>./tmp_file.txt

#循环读取临时文件中的日期,使用awk 匹配并写入到指定备份路径
while read line
   do
        if [ ! -d ${OLD_FILE}/${LOG_FILE%%${Fs}*} ]; then
                mkdir -p  ${OLD_FILE}/${LOG_FILE%%${Fs}*}
        fi
        zcat ${OLD_FILE}/${LOG_FILE}|awk -F"[[ :]+" "/${line////\/}/{print}"  >${OLD_FILE}/${LOG_FILE%%${Fs}*}/${LOG_FILE%%${Fs}*}-${line//\//-}
done<./tmp_file.txt
#循环结束

#删除临时文件
rm -rf ./tmp_file.txt