近期刚结束了一个项目,正好有时间,就把自动备份给实现了,下面是实现的思路分析和方法:
首先分析一下需求:
1.自动备份,用windows自带的计划任务就可以;
2.备份后将备份文件传输到局域网的另一台机器上,用映射网络驱动器、copy命令行能实现;
3.备份文件保存一周,这个实现起来就比较难了,如何让dos自动删除掉一周前的文件呢?
想了好久也没有办法,不过后来发现,如果把备份当天是“星期几”这个信息作为备份文件名的一部分,就能实现!
在网络上找到了一篇文章,讲解的是怎么在dos命令行里面取当天是“星期几”的案例:
http://hi.baidu.com/jfioe/blog/item/acf053f44b6a196cdcc474c9.html
其中讲到:
“输出 %date%是一个参数 但是他后面带的这些就是取值范围,说说后面的数值 第一个0代表从头开始 后面的3代表共取3个字符
C:\>echo %date:~-3%
星期三
这里面的负数代表倒数,也就取最后3个字符
”
OK,既然思路和实现的方法都搞清晰了,那最后的实现也就不困难了!
大家看我的备份文件backup000.cmd吧:
----------------------------备份文件开始----------------------------
X:\STSADMbackup\stsadm.exe -o backup -url http://www.sharepoint.org.cn/ -filename X:\STSADMbackup\sharepoint%date:~-3%.data -overwrite
注释:其中“X:\STSADMbackup\“是备份工具:STSADM.EXE的绝对路径;
“sharepoint%date:~-3%.data”是备份文件名,其中的“%date:~-3%”为当前的日期;
net use Y: \\172.*.**.**\sharename$ "******" /user:administrator
注释:映射网络网络驱动器的dos命令行;
copy X:\stsadmbackup\*%date:~-3%.data.* Y:\stsadmbackup\ /Y
注释:将所有当天的备份文件上传到网络驱动器中,其中用*%date:~-3%.data.* 来区分之前和当天的备份文件,大体意思是复制目录中所有文件名包含*%date:~-3%.data.*的文件,到网络驱动器中。
----------------------------备份文件结束----------------------------
将中间的注释去掉,复制到TXT文件里面,保存为后缀是CMD格式的文件,就可以测试一下了!
这样三个简单的命令,就实现了自动备份、自动复制和备份文件保存一周的功能;
在计划任务设置里面就很简单了:
看图片就清楚了!!
备份生成的文件
还原的话,用stsadm -o restore -url xxx -filename xxx -overwrite命令