之前每周任务里都会安排一个备份资料、代码的任务,无非是压缩成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 gongqingkui@126.com
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的主要任务的语法
4. Ant系统构建工具的使用