通过Linux的crontab+shell定时备份归档Nginx的日志文件

Nginx的日志会随着访问量而暴增,也是遇到了一个问题,然后开始想到去用定时任务定期整理日志,节省linux磁盘空间。下面的sh文件,大家也可以直接使用,存在的问题,欢迎大家帮忙指出。

1、baklog.sh 文件 (根据自己的nginx路径修改)

#!/bin/sh
NGINX_DIR=/usr/local/nginx  #安装的nginx的根路径
NGINX_LOG_PATH=/usr/local/nginx/logs  #nginx存放日志路径

BAK_LOG_PATH=/usr/local/nginx/backup/logs #nginx存放备份日志路径

ACCESS_FILE_NAME=access.log  #要备份的日志名 访问日志
ERROR_FILE_NAME=error.log  #要备份的日志名 错误日志

ACCESS_FILE=$NGINX_LOG_PATH/$ACCESS_FILE_NAME  #访问日志:源文件全地址
ERROR_FILE=$NGINX_LOG_PATH/$ERROR_FILE_NAME  #错误日志:源文件全地址

BAK_TIME=`/bin/date +%Y%m%d%H%M`  #时间形式为这种202211281049 如果是凌晨12点执行用后面这段 /bin/date -d yesterday +%Y%m%d%H%M

ACCESS_BAK_NAME=$BAK_TIME-$ACCESS_FILE_NAME #访问日志:备份的文件名 202211281049-access.log
ERROR_BAK_NAME=$BAK_TIME-$ERROR_FILE_NAME #错误日志:备份的文件名 202211281049-error.log

ACCESS_BAK_FILE=$BAK_LOG_PATH/$ACCESS_BAK_NAME  #访问日志:备份文件全地址
ERROR_BAK_FILE=$BAK_LOG_PATH/$ERROR_BAK_NAME  #错误日志:备份文件全地址

echo $ACCESS_BAK_FILE
echo $ERROR_BAK_FILE

mv $ACCESS_FILE $ACCESS_BAK_FILE     #将日志移动到备份的地方
mv $ERROR_FILE $ERROR_BAK_FILE     #将日志移动到备份的地方

#压缩备份的日志 路径使用绝对路径
cd /usr/local/nginx/backup/logs

#tar -zcvf $BAK_TIME-access.tar.gz $ACCESS_BAK_NAME #202211281049-access.tar.gz
#tar -zcvf $BAK_TIME-error.tar.gz $ERROR_BAK_NAME #202211281049-error.tar.gz

tar -zcvf $BAK_TIME-log.tar.gz *.log #202211281049-log.tar.gz

#重载nginx 生成新的access.log
$NGINX_DIR/sbin/nginx -s reload
#压缩完把原文件删除
rm -f $ACCESS_BAK_FILE
rm -f $ERROR_BAK_FILE

2、Crontab配置

工具  crontab

* * * * * /usr/local/nginx/baklog.sh

配置定时任务使用如下命令

crontab -e 

3、需要注意的问题

        1、定时任务不执行(使用命令查看执行日志)

        tail -f /var/log/cron

        2、给baklog.sh可执行的权限

        chmod 777 baklog.sh

        3、建立好备份的文件夹

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值