操作系统自带的vss快照调度功能不够强大,我自己写了一个脚本,如下。可以定时对某个驱动器做快照,并保留一定的份数。
分两个脚本:snap.bat snap.js
1) rem snap.bat
rem 调用snap.js,并传入需要做快照的驱动器,如果没有传入则默认为D盘
cscript snap.js
2) //snap.js
var m = 20; //保留20份快照
if(WScript.argument.Count()>0) //获取需要做快照的驱动器参数
var Devices = WScript.arguments.Item(0);
else
Devices = "D:";
try{
var fso = new ActiveXObject("Script.FileSystemObject");
var a = fso.CreateTextFile("temp.bat",true);
a.WriteLine("vssadmin list shadows > snaplist.txt");
var wsh = new ActiveXObject("Wscript.shell");
a.close();
wsh.Run("temp.bat",0);
var k = 0;
While(!fso,FileExist("snplist.txt")){;}
While (k<5000000) k++;) //确保snaplist.txt已经生成了
var a = fso.OpenTextFile("snaplist.txt",1);
var arr = a.ReadAll().split("\r\n");
var j = 0;
for(var i = 0; i < arr.length;i++){
if(arr[i].indexOf("卷影副本集")>=0)
j++;
}
a.close();
if(j>=m){ \\如果超过最大份数就删除最旧的一份快照
a = fso.CreateTextFile("temp.bat",true);
a.WriteLine("vssadmin delete shadows /For " + Devices + " /oldest /Quiet");
a.close();
wsh.Run("temp.bat",0);
}
While (k<10000000) k++;)
a = fso.CreateTextFile("temp.bat",true);
a.WriteLine(""vssadmin create shadows /For=" + Devices);
a.close();
wsh.Run("temp.bat",0);
}
Catch(e){
WScript.echo(e.description)
}
阅读(1041) | 评论(0) | 转发(0) |