Windows下 Nginx日志文件按计划时间自动分割、手动备份

使用说明:

为限制 Nginx日志文件大小增加,文件过大,导致无法收缩日志,在配置好的nginx的安装目录下,可以采用批处理文件对日志,根据实际需要的时间进行自动切割,本脚本以天为单位进行保存。对于日志备份功能,因存储空间不同,所以未编写自动备份功能,根据实际需要,可增加自动备份功能。

注意事项:

1.批处理文件脚本仅每天只能执行一次,重复执行会提示功能选项替换或者备份当天以前的access日志,替换或者重复备份会出现access.log覆盖之前的日志。
2.在实施前,如果需要测试,应在自己的电脑上自行创建脚本所需的nginx安装目录和nginx对应文件夹 logs下的access.log对象文件。
3.批处理的其他功能,请自行创建环境去熟悉。

1.按计划分割日志文件

1.1移动和修改批处理文件

1、注意nginx的安装路径找到,进入logs文件夹。
在这里插入图片描述
2、移动批处理文件脚本在nginx的安装路径下的log文件夹。
在这里插入图片描述
3、需修改批处理文件中的路径(由于每台服务器的nginx安装路径不一致)详见步骤4更改。
批处理脚本文件:

@shift

::设置nginx安装文件路径和当天时间变量
@echo off
set nginx_dir=C:\nginx-1.15.12
set dir=%nginx_dir%\logs\cut_log
set dir2=%nginx_dir%\logs\backup_log
set log=%nginx_dir%\logs\access.log
set today=%date:~0,4%-%date:~5,2%-%date:~8,2%

::判断nginx安装文件路径设置是否正确
:exist_nginx_dir
@echo off
if exist %nginx_dir% (
cd %nginx_dir%
goto check_log
) else (
echo 此路径%nginx_dir%不存在,请检查
goto stop
)

::判断nginx的access.log
:check_log
@echo off
if exist %log% (
goto check_dir
) else (
echo %log%文件不存在,请检查
goto stop
)

::判断nginx的cut_log目录
:check_dir
@echo off
if exist %dir% (
goto check_dir2
) else (
md "%dir%"
goto check_dir2 
)
::判断nginx的backup_log目录
:check_dir2
@echo off
if exist %dir2% (
goto p
) else (
md "%dir2%"
goto p 
)

::打印 当日志重复时,进行功能选择是否替换或者备份
:p
@echo off
if exist %dir%\access-%today%.log (
echo.
echo 注意:
echo 重复备份 和 替换 会覆盖已存在的当天脚本。
echo 请慎重考虑是否 重复备份 和 替换 !    
echo. 
echo 当天的access-%today%.log已经存在。
echo 是否需要 备份和 替换access-%today%.log?
echo.    
echo 输入 y 确认 替换 当天的access.log日志 
echo 输入 b 确认 备份 当天的access.log日志
echo 输入 q 或其他 退出 
echo.    
echo. 
echo.     
goto check
) else (
goto main
)

::进行功能选择是否替换或者备份
:check
@echo off
set /p check_func=请输入:
if %check_func% == b (goto backup)
if %check_func% == y (
goto funy
) else (
goto quit
)

::退出
:quit
@echo off
exit
::暂停
:stop
@echo off
pause

::创建相关目录和对nginx日志进行切割
:main
@echo off
::结束nginx进程
taskkill /F /IM nginx.exe > nul
move "%log%" "%dir%\access-%today%.log" 
start %nginx_dir%\nginx.exe 
goto quit

::替换日志文件
:funy
@echo off
::结束nginx进程
taskkill /F /IM nginx.exe > nul
move "%log%" "%dir%\access-%today%.log" > nul
start %nginx_dir%\nginx.exe > nul
echo 已完成日志替换
goto stop

::备份日志文件
:backup
@echo off
if exist %dir2%\access-%today%.log (
echo 今天保存过的access-%today%.log备份文件已经存在
echo.
echo 如需再次替换今天的备份,请输入c
echo.
goto sure_backup
) else (
copy "%dir%\access-%today%.log" "%dir2%\" > nul
echo 已经完成access-%today%.log文件备份
goto stop
)

::确认备份日志文件
:sure_backup
@echo off
set /p check_sure=请输入:
if %check_sure% == c (
copy "%dir%\access-%today%.log" "%dir2%\" > nul
goto backup1
) else (
goto quit
)

::判断再次备份的日志文件是否存在
:backup1
@echo off
if exist %dir2%\access-%today%.log (
echo 再次备份的access-%today%.log文件已经存在
goto stop
) else (
goto quit
)

4、复制图中nginx路径,进入log文件夹下,用记事本打开或者编辑修改批处理脚本文件。
在这里插入图片描述
5、修改此处路径。将刚刚复制的nginx路径替换图中批处理脚本的路径。
在这里插入图片描述

1.2创建Windows按时间执行批处理文件

1、在Windows服务器上创建任务计划程序。(本例以每天保存异一次)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
2、任务名称可随意创建, 意思为nginx的access.log文件处理的任务就行。
在这里插入图片描述
3、根据需要选择任务时间
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
4、点击浏览,选择脚本的路径
在这里插入图片描述
5、完成
在这里插入图片描述
6、修改任务属性
在这里插入图片描述
7、修改属性为不管用户是否登录都要运行和使用最高权限运行
在这里插入图片描述

2.手动按计划分割后的日志文件备份.bat

1、确认在执行按计划分割日志文件后,cut_log文件夹下由日志文件,backup_log备份文件夹下没有文件。
在这里插入图片描述
在这里插入图片描述
2、然后手动双击批处理文件,根据弹出的命令行提示输入b ,进行手动备份。
在这里插入图片描述
3、提示完成备份后,去备份文件夹下检查。

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值