0
点赞
收藏
分享

微信扫一扫

shell+crontab实现定时备份nginx日志以及删除七天前备份文件

静鸡鸡的JC 2022-03-12 阅读 162

linux是一个很能自动产生文件的系统,日志、邮件、备份等。虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情。不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧。

提前说明:我的脚本文件放在/bin/sh /app_deploy/

                  我要备份的日志文件在/data/logs/nginx

                  我要把备份的日志文件放在/backup/logs

(1)脚本如下:

#!/bin/sh
BASE_DIR=/usr/local/openresty/nginx  #根路径
BASE_FILE_NAME=access_nginx.log  #要备份的日志名
CURRENT_PATH=/data/logs/nginx  #要备份的日志的路径
BAK_PATH=/backup/logs    #备份的地方
CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME
BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`  #时间形式为这种202201031535
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME    #要修改的文件名202201031535-access.log
echo $BAK_FILE
mv $CURRENT_FILE $BAK_FILE     #将日志移动到备份的地方
#压缩备份的日志
cd /backup/logs
tar -zcvf `date -d yesterday +%Y%m%d%H%M`.tar.gz $BAK_FILE
#重载nginx 生成新的access.log
$BASE_DIR/sbin/nginx -s reload
#压缩完把原文件删除
rm -f $BAK_FILE
#删除七天前的日志
find /backup/logs/ -mtime +2 -name "*.tar.gz"   -exec rm -rf {} \; 

(2)命令行:corntab -e 去添加我们需要的定时任务

        #我这里是每天晚上0点执行脚本哈 ,https://www.cnblogs.com/longjshz/p/5779215.html  这里有一篇详细介绍corn的,这里只简单说一下用法:

        0 0 * * * /bin/sh /app_deploy/backup.sh 

举报

相关推荐

0 条评论