数据库备份文件自动压缩脚本

来源:互联网 发布:java反射获得属性值 编辑:程序博客网 时间:2024/04/30 22:19
给大家分享一个数据库备份文件自动压缩脚本,相信大家会遇到这种情况,SQL的备份文件越来越大,而且每天都要备份,磁盘空间完全不够用,每天手动删除又太麻烦,如果服务器数量少还好说,如果服务器数量很多,几十台上百台,手动删除即费时又费力。在这里有一个bat脚本,调用的是7Z压缩软件,(7Z的压缩比率比winrar要高,能更有效的利用空间)这个脚本能自动压缩文件,然后自动删除一段时间前的原备份文件。通过计划任务每天自动执行,最好在凌晨,不会影响服务器的正常运作。

          下面是脚本内容:

@echo off
set path=d:\ddt_tool
rem set path=E:\sst27
set data_path=d:\Db_Tank_Back
if exist e:\Db_Tank_Back (set data_path=e:\Db_Tank_Back)

rem 压缩的数据库文件时间,如3天前的
set /a zip_time=3
echo %zip_time%
for /f %%b in ('%path%\datex -o -%zip_time% -fYYYYMMDD') do set /a var1=%%b
for /f %%c in ('%path%\datex -o -%zip_time% -fD') do set /a var2=%%c
%path%\7za.exe a %data_path%\Db_Tank_Copy_%var1%.7z %data_path%\Db_Tank_Copy%var2%.bak

rem  定义删除的数据库文件时间,如4天前的
set /a del_time=4
echo %del_time%
for /f %%d in ('%path%\datex -o -%del_time% -fD') do set /a var3=%%d

rem  定义删除的压缩数据文件时间,如30天前
set /a del_zip=30
echo %del_zip%
for /f %%e in ('%Path%\datex -o -%del_zip% -fYYYYMMDD') do set /a var4=%%e

rem 删除数据文件
del /Q /F %data_path%\Db_Tank_Copy%var3%.bak
del /Q /F %data_path%\Db_Tank_Copy%var4%.7z
exit
 

在这里设定的是自动删除4天前的原备份文件,自动删除30天前的压缩文件。还有很重要的一点,时间的获取是通过一个外部命令取得的,名字叫“DateX.exe”,要把这个命令和脚本放在同一个目录下。

最后,通过schtasks设置bat脚本每天自动执行!

http://53050.blog.51cto.com/43050/321540


原创粉丝点击