快捷搜索:  

服务器数据自动备份(用WINRAR自动备份MYSQL)

该程序能每天自动备份服务器MYSQL数据库,并将7天前老数据删除将以下内容保存为bat批处理文件,然后建立计划任务,定时执行这个bat脚本:

C:\Progra~1\WinRAR\rar a -as -r E:\bak\%date:~0,4%%date:~5,2%%date:~8,2%.rar F:\PHP\MySQL545\data\

说明:调用rar程序进行打包,存储为类似20080902.rar的以当天日期为文件名的压缩包。。备份的是F盘MYSQL目录下的MYSQL数据存放目录DATA内的所有文件.WINRAR参数说明: 

-as:同步压缩文件内容。举个例子,在已经存在一个压缩文件backup.exe的情况下:
 1)若欲备份文件中含有文件a,而backup.exe没有,则添加文件a到backup.exe;
 2)若欲备份文件中不含有文件a,而backup.exe有,则从backup.exe删除文件a;
 3)若都含有文件a,但欲备份文件中的a与backup.exe中的有区别,则使backup.exe中的文件a跟欲备份文件中的相同。
最终使备份文件跟欲备份文件无差异。

-r:包含子文件夹。

-sfx:生成自解压文件。

这样就是每天生成一个压缩包;如果服务器备份时候经常有写入操作,这样是无法正确备份的,这时候,我们就需要先停止MYSQL服务,使用net stop mysql

把net stop mysql写在上面那个代码的上面一行,先执行。

如果是服务器空间比较紧张的朋友,还可以用下面的脚本来自动删除7天以前的文件:

将以下脚本加在上面那个脚本末尾,或者单独保存一个bat,新建立个计划任务:

@echo off
  Rem 取7天之前的日期,取回放入变量nowdate
  echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs
  for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
  for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
  for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
  if %m% LSS 10 set m=0%m%
  if %d% LSS 10 set d=0%d%
  set /a nowdate=%y%%m%%d%
  
  Rem 删除文件,修改下面的deldir变量为你要需要删除的文件所在的目录
  set deldir=E:\bak
  
  for /f "delims=." %%i in ('dir /b %deldir%') do (
  if %%i LSS %nowdate% del /f %deldir%\%%i.rar
  )  

代码很好懂。注意修改里面的目录为你自己的目录。-7是指删除7天以前的文件。可以修改成其他数值。
当然,需要你的服务器支持wscript,以及执行权限足够运行rar程序和写入tmp目录

完整代码如下:

net stop mysql
C:\Progra~1\WinRAR\rar a -as -r E:\bak\%date:~0,4%%date:~5,2%%date:~8,2%.rar F:\PHP\MySQL545\data\
@echo off
  Rem 取7天之前的日期,取回放入变量nowdate
  echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs
  for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
  for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
  for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
  if %m% LSS 10 set m=0%m%
  if %d% LSS 10 set d=0%d%
  set /a nowdate=%y%%m%%d%
 
  Rem 删除文件,修改下面的deldir变量为你要需要删除的文件所在的目录
  set deldir=E:\bak
 
  for /f "delims=." %%i in ('dir /b %deldir%') do (
  if %%i LSS %nowdate% del /f %deldir%\%%i.rar
  ) 
net start mysql

然后自定义计划任务来执行这个BAT

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论