/*

文件 完整、差异备份(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