栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

2021-10-22 日志自动备份与清除之nginx

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-22 日志自动备份与清除之nginx

将nginx的日志切割成每日日志

vim /tmp/shell/nginx_date.sh
// An highlighted block
#!/bin/bash
logdir=/usr/local/nginx/logs/
prefix=`date -d "-1 day" +%y%y%m%d`
cd $logdir
for f in `ls access.log`
do
mv $f $prefix-$f
done
/bin/kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid 2>/dev/null) 2>/dev/null

将nginx日志做异地备份

vim /tmp/shell/nginx_log.sh
#!/bin/bash

echo `date '+%Y%Y-%m-%d %H:%M:%S'`" 打包日志执行开始!";

echo "默认打包所有的日志文件"
sevenDaysAgoDate=`date -d "7 days ago" +%Y%Y-%m-%d`

#筛选打包日志文件的截止日期(此处为获取当前日期)
#起始日期时间戳(作为日期范围对比使用)
sevenTimeStamp=`date -d "$sevenDaysAgoDate" +%s`

#截至日期时间戳
currentTimeStamp=`date -d "$currentDate" +%s`

index=0

#日志读取路径
filePath="/usr/local/nginx/logs"

#备份目录路径
backupPath="/tmp/backup/nginx_logs"

#获取该路径下所有日志文件
fileList=`ls $filePath -1 -c`

#遍历所有日志文件
for fileName in $fileList

do
    #将日志文件名及后缀与正则表达式做对比返回yyyy-mm-dd格式的日期值(如2018-09-10)
    fileDate=$(expr "$fileName" : '.*[0−9]{4}-[0−9]{2}-[0−9]{2}[0−9]{4}-[0−9]{2}-[0−9]{2}.*.*')
    #将日期转换为时间戳
    fileDateTimeStamp=`date -d "$fileDate" +%s`

    #当时间戳值不为空且大于等于起始日期小于当前日期,那么获取该日志文件
    #then
    #    fileList[$index]="$filePath/$fileName"
    #else
    #    fileList[$index]=""
    #fi
    if [ "${fileName##*.}" = "pid" ]
    then
        echo "$fileName文件不能删除"
    else
        fileList[$index]="$filePath/$fileName"
        (( index ++ ))
    fi

done

#获取所有在日期范围内的日志文件, @代表所有
meetConFiles=${fileList[@]}
#符合条件的日志文件数大于0就打包压缩
if [ "${#meetConFiles}" -gt 0 ]
then
    tar -zcvf ${currentDate}_nginx.tar.gz $meetConFiles
   mv ${currentDate}_nginx.tar.gz $backupPath
###备份到异地的IP:192.148.137.2做免密登录
    rsync $backupPath/${currentDate}_nginx.tar.gz root@192.148.137.2:$backupPath
else
    echo "Not found the meet condition's files!"
    exit 0
fi

echo "$currentDate.tar.gz create completion, Now begin to delete old files."

#删除已被打包压缩的日志文件
rm -rf $meetConFiles
#这里我的nginx的启动用户是www,root用户可直接启动
su www < 

将脚本添加到周期性计划日志

[root@localhost ~]# crontab -e
59 23 * * * /tmp/shell/nginx_date.sh
30 1 * * 1  /tmp/shell/nginx_log.sh
[root@localhost ~]# service crond reload
这里我将ngxin日志每天切割出新的log文件,并每周将日志文件进行打包到本地和异地各一份,清除原来日志
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号