/*
文件 完整、差异备份(xcopy、winzip、winrar),经测试zip和rar,发现rar较快,尤其差异备份时。
*/
use system
GO
if object_id('up_backup_files') is not null
drop proc up_backup_files
GO
Create Proc up_backup_files
@BakType varchar(10)='full', --备份类型,full 完整、diff 差异
@Path varchar(50), --要备份的文件(夹), 如:'D:\dbbcp'
@BakToPath varchar(50), --备份路径主目录, 如:'D:\filebak\dbbcp'
@DelType varchar(10)='N', --删除旧备份类型,Y 删除 N 不删除
@BeforeDaysDel int =14 --删除多少天以前的旧备份
as
/**********************
{VER EDITOR DATE COMMENT }
{ver 1.0 Guijun.Jia 2010-04-21 Create Proc}
EXAMPLE:
exec up_backup_files
'full',
'D:\dbbcp',
'D:\filebak\dbbcp',
'Y',
14
describe:
实现文件的完整、差异备份
************************/
declare @SQL varchar(500)
if @BakType='full'
set @SQL = 'xcopy ' + @Path + ' ' + @BakToPath + '_' + convert(varchar(10), getdate(), 112)
+'_Full /E /V /C /R /K /Y /I '
else
set @SQL = 'xcopy ' + @Path + ' ' + @BakToPath + '_' + convert(varchar(10), getdate(), 112)
+'_Diff /E /V /C /R /K /Y /I ' + '/D:'+ convert(varchar(10), getdate()-1, 110)
print @SQL
exec xp_cmdshell @SQL
if @DelType='Y'
begin
set @SQL='rd '+@BakToPath+ '_' + convert(varchar(10), getdate()-@BeforeDaysDel, 112)+'_Full /S /Q'
print @SQL
exec master.dbo.xp_cmdshell @sql
set @SQL='rd '+@BakToPath+ '_' + convert(varchar(10), getdate()-@BeforeDaysDel, 112)+'_Diff /S /Q'
print @SQL
exec master.dbo.xp_cmdshell @sql
end
GO
use system
GO
if object_id('up_backup_files_wzzip') is not null
drop proc up_backup_files_wzzip
GO
Create Proc up_backup_files_wzzip
@BakType varchar(10)='full', --备份类型,full 完整、diff 差异
@Path varchar(50), --要备份的文件(夹), 如:'D:\dbbcp'
@BakToPath varchar(50), --备份路径目录, 如:'D:\filebak\dbbcp',其中dbbcp为备份文件名初始内容
@Except varchar(500)='', --备份文件夹下不备份的,多个可以用 ; 分隔,如:D:\dbbcp\aaa\*.*;D:\dbbcp\*.log
@DelType varchar(10)='N', --删除旧备份类型,Y 删除 N 不删除
@BeforeDaysDel int =14 --删除多少天以前的旧备份
as
/**********************
{VER EDITOR DATE COMMENT }
{ver 1.0 Guijun.Jia 2010-04-22 Create Proc}
EXAMPLE:
--全备+排除
exec up_backup_files_wzzip
'full',
'D:\dbbcp',
'D:\filebak\dbbcp',
'D:\dbbcp\aaa\*.*;D:\dbbcp\*.log',
'Y',
14
describe:
首先要安装winzip,并将wzzip复制到windows目录下
实现文件的完整、差异备份
************************/
declare @SQL varchar(500)
if @BakType='full'
set @SQL = 'wzzip -a -r -P ' + @BakToPath + '_' + convert(varchar(10), getdate(), 112)
+ '_Full.zip ' + @Path
else
set @SQL = 'wzzip -a -r -P ' + @BakToPath + '_' + convert(varchar(10), getdate(), 112)
+ '_Diff.zip ' + @Path
+' -tf'+ convert(varchar(10), getdate()-1, 112)
if isnull(@Except,'')<>''
set @SQL=@SQL+' -x'+replace(ltrim(@Except),';',' -x')
print @SQL
exec xp_cmdshell @SQL
if @DelType='Y'
begin
set @SQL='del '+@BakToPath+ '_' + convert(varchar(10), getdate()-@BeforeDaysDel, 112)+'_Full.zip /S /Q'
print @SQL
exec master.dbo.xp_cmdshell @sql
set @SQL='del '+@BakToPath+ '_' + convert(varchar(10), getdate()-@BeforeDaysDel, 112)+'_Diff.zip /S /Q'
print @SQL
exec master.dbo.xp_cmdshell @sql
end
GO
use system
GO
if object_id('up_backup_files_rar') is not null
drop proc up_backup_files_rar
GO
Create Proc up_backup_files_rar
@BakType varchar(10)='full', --备份类型,full 完整、diff 差异
@Path varchar(50), --要备份的文件(夹), 如:'D:\dbbcp'
@BakToPath varchar(50), --备份路径目录, 如:'D:\filebak\dbbcp',其中dbbcp为备份文件名初始内容
@Except varchar(500)='', --备份文件夹下不备份的,多个可以用 ; 分隔,如:D:\dbbcp\aaa\*.*;D:\dbbcp\*.log
@DelType varchar(10)='N', --删除旧备份类型,Y 删除 N 不删除
@BeforeDaysDel int =14 --删除多少天以前的旧备份
as
/**********************
{VER EDITOR DATE COMMENT }
{ver 1.0 Guijun.Jia 2010-04-22 Create Proc}
EXAMPLE:
--全备+排除
exec up_backup_files_rar
'full',
'D:\dbbcp',
'D:\filebak\dbbcp',
'D:\dbbcp\aaa\*.*;D:\dbbcp\*.log',
'Y',
14
describe:
首先要安装winrar,并将rar复制到windows目录下,或将winrar安装目录设置到环境变量中
实现文件的完整、差异备份
WinRar使用方法见其帮助文档,非常全面
************************/
declare @SQL varchar(500)
if @BakType='full'
set @SQL = 'rar a ' + @BakToPath + '_' + convert(varchar(10), getdate(), 112)
+ '_Full.rar ' + @Path
else
set @SQL = 'rar a ' + @BakToPath + '_' + convert(varchar(10), getdate(), 112)
+ '_Diff.rar ' + @Path
+' -ta'+ convert(varchar(10), getdate()-1, 112)
if isnull(@Except,'')<>''
set @SQL=@SQL+' -x'+replace(ltrim(@Except),';',' -x')
print @SQL
exec xp_cmdshell @SQL
if @DelType='Y'
begin
set @SQL='del '+@BakToPath+ '_' + convert(varchar(10), getdate()-@BeforeDaysDel, 112)+'_Full.rar /S /Q'
print @SQL
exec master.dbo.xp_cmdshell @sql
set @SQL='del '+@BakToPath+ '_' + convert(varchar(10), getdate()-@BeforeDaysDel, 112)+'_Diff.rar /S /Q'
print @SQL
exec master.dbo.xp_cmdshell @sql
end
GO