数据库备份压缩删除小脚本(减少备份文件所占体积)
目的:
1.数据库备份后自动压缩,并在下次备份前删除之前目录的备份文件(实现压缩需要安装 WinRAR.exe)
2.有选择地删除过期的文件(测试用例中是删除7天前不是周一的文件 And 删除35天前是周一的文件)
使用方法:
SQL 代理作业 步骤中按计划执行;
可以使用同步工具BTSync.exe http://www.bittorrent.com/sync 工具 把压缩好的文件从服务器同步到自己电脑上面
测试时需要建立文件夹:
D:\Bak\ktvcase\
D:\Bak\ktvcase\RAR
Create PROCEDURE [do_backup] AS declare @prefix nvarchar(100), @datefile nvarchar(100), @bakfile nvarchar(100), @rarfile nvarchar(100), @delcmd nvarchar(100), @rarcmd nvarchar(150) BEGIN
-- ktvcase 为数据库名称
set @prefix='D:\Bak\ktvcase\' --备份文件夹路径 需要自己手动建立文件夹 在这个目录下面还需要建立一个文件夹RAR set @datefile=cast(Year(GetDate()) as varchar(4))+cast(Month(GetDate()) as varchar(2))+cast(Day(GetDate()) as varchar(2)) set @bakfile=@prefix+@datefile+'.bak'
-- 如果是周一则修改压缩文件名称 set @rarfile=@prefix+'RAR\'+@datefile+'.rar'
IF(datename(weekday, getdate())='星期一' OR datename(weekday, getdate()) ='Monday') BEGIN SET @rarfile=@prefix+'RAR\'+@datefile+'.zip' END
--先删除旧的备份文件bak set @delcmd = 'del '+@prefix+ '*.bak /f/q' exec master..xp_cmdshell @delcmd --删除7天之前的备份压缩文件rar set @delcmd = ' forfiles /p "D:\Bak\ktvcase\RAR" /s /m *.rar /d -7 /c "cmd /c del @path' exec master..xp_cmdshell @delcmd --删除35天之前的属于周一的备份压缩文件zip set @delcmd = ' forfiles /p "D:\Bak\ktvcase\RAR" /s /m *.zip /d -35 /c "cmd /c del @path' exec master..xp_cmdshell @delcmd BACKUP DataBASE ktvcase TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'ktvcase数据备份', NOSKIP , STATS = 10, NOFORMAT set @rarcmd ='"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -pwuwuwu@@### '+@rarfile+' '+@bakfile --将wuwuwu@@###改为您要设置的密码,进行加密压缩 --PRINT @delcmd --PRINT @rarcmd -- exec [do_backup] exec master..xp_cmdshell @rarcmd END
如果提示没有执行脚本的权限,需要执行下面的脚本开启
-- 允许配置高级选项 EXEC sp_configure 'show advanced options', 1 GO -- 重新配置 RECONFIGURE GO -- 启用xp_cmdshell EXEC sp_configure 'xp_cmdshell', 1 GO --重新配置 RECONFIGURE GO
顶
收藏
关注
评论
作者:王思明
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss