在服务器的管理中,日志的归档也是工作中重要的部分。日志膨胀不仅会浪费磁盘空间,严重时甚至导致系统崩溃。
使用下面的批处理配合计划任务,将会使管理日志自动化。下面的脚本采用保留最近7天的日志留作查看,其他的压缩备份,保留最近2个月的日志。
1.复制代码另存为compresslogs.bat
- @echo off
- rem 以下是forfiles注释
- rem /p Path表明要从哪里开始搜索
- rem /m SearchMask按照SearchMask搜索文件,默认*.*
- rem /s指示forfiles在子目录中搜索。
- rem /d与当前日期的差值,+5为后5天,-5为前5天
- rem /c在每个文件上运行指定的Command
- rem /m SearchMask按照 SearchMask 搜索文件,默认*.*
- rem 以下是winrar参数注释
- rem a添加文件到压缩文件
- rem -m5设置压缩级别(0-存储...3-默认...5-最大)
- rem -df压缩后删除文件
- rem -ep从名称中排除路径
- rem 调用C:\Program Files\WinRAR\Rar.exe将E:\logs目录下7天前所有的*.log文件(含子目录文件)用winrar进行压缩,压缩率为最大,压缩后删除源文件。
- for /f "tokens=1" %%a in ('forfiles /P E:\logs /M "*.log" /S /D -7 /C "cmd /c echo @path"') do "C:\Program Files\WinRAR\Rar.exe" a -m5 -df -ep %%a.rar %%a
- rem 删除E:\logs目录下60天前备份的rar文件。
- for /f "tokens=1" %%a in ('forfiles /P E:\logs /M "*.rar" /S /D -60 /C "cmd /c echo @path"') do del %%a
- pause>nul0>
2.1使用下面的bat将compresslogs.bat添加到计划任务,使用system权限。
SCHTASKS /Create /tn CompressLogs /tr D:\CompressLogs.bat /ru SYSTEM /sc DAILY /st 03:30:00
rem /tn CompressLogs定义计划任务名字为CompressLogs
rem /tr D:\CompressLogs.bat定义计划任务程序执行路径
rem /ru SYSTEM定义使用system执行该程序
rem /sc DAILY定义为每日执行
rem /st 03:30:00定义开始时间为凌晨03:30:00
2.2或者你也可以使用vbs将compresslogs.bat添加到计划任务,使用system权限。
- strComputer = "."
- Set objWMIService = GetObject("winmgmts:" _
- & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
- Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
- strcmd = "cmd /c d:\bat\compresslogs.bat"
- errJobCreated = objNewJob.Create _
- (strcmd, "20100101033000.000000+480", True , 1 OR 2 OR 4 OR 8 OR 16 OR 32 OR 64, , , JobID)
- Wscript.Echo errJobCreated
注:使用bat和vbs的区别就是bat添加的tasks可以修改,vbs添加的tasks为不可修改状态。