Nginx日志批量切割与批量打包脚本

#!/bin/bash
# Nginx 日志切割脚本
# Make at:2017.6.21
# Writer:AKA
# 可以对Nginx日志目录下多日志进行切割,备份压缩,到期自动删除没用的日志
# website:www.akiraka.com

#Nginx 日志存放路径
LOG_DIR=/data/wwwlogs
#Nginx 日志切割后存储路径
BAK_DIR=/data/logsbak
#Nginx PID路径
PID_DIR=/usr/local/nginx/logs/nginx.pid
#日志保存天数
SAVE_DAYS=10
#获取日期
DATE=`date -d "yesterday" +"%Y%m%d"`

#判断Nginx是否有日志存放目录
if [[ ! -d $BAK_DIR ]];then
  mkdir -p $BAK_DIR
  echo "$BAK_DIR 目录创建成功!"
else
  echo "$BAK_DIR 目录已经存在,无需创建!"
fi

#进入#Nginx 日志存放路径
cd $LOG_DIR/
#将Nginx目录下的日志批量重命名,log后缀加上日期 这个是rename c版本
rename ".log" ".log-$DATE" *.log
将Nginx目录下的日志批量重命名,log后缀加上日期 perl版本 支持正则
rename 's/.log$/.log-$DATE/' *
#将重命名的日志批量打包
ls -F | awk -F '/' '{print $1 ".tar.gz"}''{print $1"/"}' | xargs -n2 tar czvf
#因为批量压缩不知道怎么压缩到指定文件夹中,所以单独执行一次移动文件到指定文件夹
mv *.log-$DATE.tar.gz $BAK_DIR/
#删除日志文件,因为已经压缩好了文件就没用了,所以把它删除掉
rm -f *.log-$DATE

#删除设置保存天数日志
find $BAK_DIR/ -mtime +$SAVE_DAYS -exec rm -rf {} \;

#平滑重启Nginx服务
/usr/local/nginx/sbin/nginx -s reload

原生打包方法

cat > /etc/logrotate.d/nginx << EOF
/data/wwwlogs/*nginx.log {
  daily
  rotate 5
  missingok
  dateext
  compress
  notifempty
  sharedscripts
  postrotate
    [ -e /var/run/nginx.pid ] && kill -USR1 \`cat /var/run/nginx.pid\`
  endscript
}
EOF

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/152.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Nginx日志批量切割与批量打包脚本
#!/bin/bash # Nginx 日志切割脚本 # Make at:2017.6.21 # Writer:AKA # 可以对Nginx日志目录下多日志进行切割,备份压缩,到期自动删除没用的日志 # website:ww……
<<上一篇
下一篇>>
文章目录
关闭
目 录