The name of a script file for pre-processing of a restoration is as follows.
For non-clustered systems
<Environment directory>\etc\backup\scripts\OpcRestorePre.js
For clustered systems
<Shared disk>:\etc\opt\swstorage\etc\backup\scripts\OpcRestorePre.jsPre-processing Script for Restoration (OpcRestore.pre)
1: // AdvancedCopy Manager for Windows
2: // All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2005
3: //
4: // OpcRestorePre.js: Pre-Processing Script for swstrestore
5: //
6: // [Parameters]
7: // 1st argument: device name of transaction volume
8: //
9: // [Return Values]
10: // 0: The script ended normally.
11: // 2: The number of the arguments is incorrect.
12: // 3: not used, but must not be used because older versions use these values.
13: // 4: An error other than the above occurred.
14:
15: try {
16: // create global objects
17: var WshShell = WScript.CreateObject("WScript.Shell"); // create Shell object
18:var WshEnv = WshShell.Environment("PROCESS"); // create Environment object
19:var fsObj = WScript.CreateObject("Scripting.FileSystemObject"); // create FileSystemObject object
20:
21:// create SwstRestorePreProc object
22:var proc = new SwstRestorePreProc();
23:
24:// there is nothing to do if the pre/post-processing is not customized
25:proc.doNothingForDriveLetter();
26:
27:SwstQuit(0);
28: } catch (e) {
29:SwstQuit(4);
30: }
31:
32: function SwstRestorePreProc()
33: {
34:// member variables
35:this.tvName = WScript.Arguments.length!=1?SwstQuit(1):WScript.Arguments.Item(0); // device name of transaction volume
36:this.postFileName = getDataPathName() + "\\" + getPutFileName(this.tvName) + ".pre"; // name of postprocessing file
37:
38:// member functions
39:this.doNothingForDriveLetter = doNothingForDriveLetter; // self-explanatory
40:this.writePostFile = writePostFile; // self-explanatory
41: }
42:
43: function doNothingForDriveLetter()
44: {
45:this.writePostFile("none");
46: }
47:
48: function writePostFile(type)
49: {
50:var overwrite = true; // means to overwrite a file if it exists.
51:var postFileStream = fsObj.CreateTextFile(this.postFileName, overwrite);
52:postFileStream.Write(type);
53:postFileStream.Close();
54: }
55:
56: function SwstQuit(exitStatus)
57: {
58:switch(exitStatus) {
59:case 0:
60: WScript.Quit(0);
61:case 1:
62: WScript.Echo("[Restore Preprocessing] The number of the arguments is incorrect.");
63: WScript.Quit(2);
64:default:
65: WScript.Echo("[Restore Preprocessing] The script exited abnormally.");
66: WScript.Quit(4);
67: }
68: }
69:
70: function getDataPathName()
71: {
72:return WshShell.RegRead(getSetupInfoKey() + "\\etcPathName") + "\\etc\\backup\\data\\DEFAULT";
73: }
74:
75: function getBinPathName()
76: {
77:return WshShell.RegRead(getSetupInfoKey() + "\\PathName") + "\\bin";
78: }
79:
80: function getSetupInfoKey()
81: {
82:var nodeName = WshEnv.Item("SWSTGNODE");
83:if( nodeName != "" ){
84: return "HKEY_LOCAL_MACHINE\\SOFTWARE\\Fujitsu\\AdvancedCopy Manager\\CurrentVersion\\" + nodeName;
85: }
86:return "HKEY_LOCAL_MACHINE\\SOFTWARE\\Fujitsu\\AdvancedCopy Manager\\CurrentVersion";
87: }
88:
89: function getPutFileName(deviceName){
90:var fileName;
91:if( isSafeDISKName(deviceName) ){
92: var re = /(\S+)\/(\S+):(\S+)/;
93: fileName = deviceName.replace(re, "$1_$2_$3");
94: }else{
95: fileName = deviceName;
96: }
97:return(fileName);
98: }
99:
100: function getGXDXPX(deviceName){
101:var gXdXpX;
102:if( isSafeDISKName(deviceName) ){
103: var re = /(\S+)\/(\S+):(\S+)/;
104: gXdXpX = deviceName.replace(re, "$3");
105: }else{
106: gXdXpX = deviceName;
107: }
108:return(gXdXpX);
109: }
110:
111: function isSafeDISKName(deviceName){
112:var key = ":g";
113:var s = deviceName.indexOf(key);
114:if ( s < 0 ) {
115: return (false);
116: } else {
117: return (true);
118: }
119: }