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