您的位置:首页 > 数据库

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

2010-05-26 17:28 543 查看
给大家分享一个数据库备份文件自动压缩脚本,相信大家会遇到这种情况,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脚本每天自动执行!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐