之前每周任务里都会安排一个备份资料、代码的任务,无非是压缩成rar文件,然后缀上当前日期。一般一个月或者一周备份一次,虽然并不频繁却也非常麻烦。最近学习Ant和bat批处理,突然想到可以设定批处理任务来进行定时进行这些操作。思路为:文件由ant压缩命令拷贝到备份目录下,代码由svn导出备份,日常进行增量备份。这些操作可以用计划任务进行每日或者每周执行。
这里以E盘下file文件夹压缩到E盘下,命名为fileyyyy-mm-dd.rar为例。首先编写ant脚本文件build.xml,再编写bat文件执行ant构建命令,最后设定定期定时执行任务即可。
Build.xml文件编写方法见参考1-4,其内容为:
<?xml version="1.0" encoding="UTF-8"?> <project name="project" default="root"> <propertyname="file" value="e:\file" /> <targetname="root" depends="copy"> <echo>ok</echo> </target> <targetname="backup"> <zipdestfile="file${TODAY}.rar" basedir="e:\file" /> </target> <targetname="copy" depends="backup"> <movefile="file${TODAY}.rar" tofile="e:\file${TODAY}.rar" /> </target> <tstamp> <formatproperty="TODAY" pattern="yyyy-MM-dd" locale="en"/> </tstamp> </project>
上述脚本中,tstamp方法定义了TODAY的时间戳变量,用于给rar文件缀上日期信息。
Bat编写方法参考5,其内容为:
@echo off echo ------------------------- echo WeeklyBackup echo 2012.11.26 echo [email protected] echo ------------------------- ant @echo off Pause
注意这里的代码也放在build.xml的统计目录下,所以直接执行ant命令即可。
另外每周自动备份svn数据库的bat文件为:
set year=%date:~0,4% set month=%date:~5,2% set day=%date:~8,2% set svndb=svn_%year%%month%%day%.svnbak svnadmin dump d:\svndb>%svndb%
而每天定义进行增量备份svn数据库和备份MySql数据库的scx数据库的bat文件为:
set year=%date:~0,4% set month=%date:~5,2% set day=%date:~8,2% set scx_db=scx_db_%year%%month%%day%.sql set svndb=svn_%year%%month%%day%.svnbak set svndb_incremental=svn_incremental_%year%%month%%day%.svnbak svnadmin dump --incremental --revision 300:HEADd:\svndb>%svndb_incremental% cd D:\Program Files\phpStudy\MySQL\bin net start mysql mysqldump -uroot -proot scx >d:\bat\%scx_db%
任务计划设置为:
参考
1. Ant脚本的详细配置
2. Ant的主要任务的语法
3. Ant结构化程序设计和WEB程序发布
4. Ant系统构建工具的使用
5. Win下自动备份MySql数据库