‌logrotate日志分割时,rotate参数是必须要加的‌

在logrotate的配置文件中,rotate参数用于指定保留的旧日志文件数量。如果不配置rotate参数,默认是0个,也就是只允许存在一份日志,刚切分出来的日志会马上被删除‌

logrotate 配置

/usr/local/nginx-24/logs/*.log
{
 daily

rotate 180
 missingok
 copytruncate
 nocompress
 create
 dateext
 dateformat -%Y-%m-%d
 olddir /usr/local/nginx-24/logs/logbak
 sharedscripts
 postrotate
     /usr/local/nginx-24/compress_targz_nginx_logs.sh
 endscript
}

compress_targz_nginx_logs.sh 配置

#!/bin/sh

# 日志目录
BACKUP_DIR="/usr/local/nginx-24/logs/logbak"

# 获取前一天的日期
#YESTERDAY=$(date -d "yesterday" +"%Y-%m-%d")
TODAY=$(date +"%Y-%m-%d")
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 创建 tar.gz 文件
tar -czf $BACKUP_DIR/nginx_logs_$TODAY.tar.gz -C $BACKUP_DIR --exclude='*.gz' access.log-$TODAY error.log-$TODAY

mv $BACKUP_DIR/*.log-$TODAY $BACKUP_DIR/temp
#rm -rf $BACKUP_DIR/*.log-$TODAY

# 切换到包含.tar.gz文件的目录
cd /usr/local/nginx-24/logs/logbak

# 使用ls命令按修改时间排序,然后列出文件名
# 保留最新的180个文件名
# 最后使用xargs rm命令删除这些文件
ls -t *.tar.gz | tail -n +181 | xargs -d '\n' rm -f --
 

更多推荐