The names of the post-processing script files used for tape copying are as follows:
For non-cluster operation:
"environment settings directory"\etc\backup\scripts\TapeCopyPost.js |
For cluster operation:
<shared disk>:\etc\opt\swstorage\etc\backup\scripts\TapeCopyPost.js |
Content of shell script
1: // AdvancedCopy Manager for Windows 2: // All Rights Reserved, Copyright FUJITSU LIMITED, 2005-2007 3: // 4: // TapeCopyPost.js: Post-Processing Script for tape copy 5: // 6: // [Parameters] 7: // 1st argument: device name of backup volume 8: // 9: // [Return Values] 10: // 0: The script ended normally. 11: // 2: The number of the arguments is incorrect. 12: // 4: An error other than the above occurred. 13: 14: try { 15: // create global objects 16: var WshShell = WScript.CreateObject("WScript.Shell"); // create Shell object 17: var WshEnv = WshShell.Environment("PROCESS"); // create Environment object 18: var fsObj = WScript.CreateObject("Scripting.FileSystemObject"); // create FileSystemObject object 19: 20: // create SwstTapeCopyPostProc object 21: var proc = new SwstTapeCopyPostProc(); 22: 23: // do nothing if postprocessing file exists 24: if (fsObj.FileExists(proc.postFileName) == false) { 25: SwstQuit(0); 26: } 27: 28: // get postprocessing type 29: var postProcType = proc.getPostProcData(proc.postFileName); 30: switch(postProcType) { 31: case "none": 32: proc.doNothing(); 33: break; 34: } 35: 36: // clear temporary files 37: proc.deletePostFile(proc.postFileName); 38: SwstQuit(0); 39: } catch (e) { 40: SwstQuit(6); 41: } 42: 43: function SwstTapeCopyPostProc() 44: { 45: // member variables 46: this.bvName = WScript.Arguments.length!=1?SwstQuit(1):WScript.Arguments.Item(0); // device name of transaction volume 47: this.postFileName = getDataPathName() + "\\" + getPutFileName(this.bvName) + ".pre"; // name of postprocessing file 48: 49: // member functions 50: this.getPostProcData = getPostProcData; // self-explanatory 51: this.doNothing = doNothing; // self-explanatory 52: this.deletePostFile = deletePostFile; // self-explanatory 53: } 54: 55: function getPostProcData(postfile) 56: { 57: var iomode = 1; // means read-only mode 58: var create = false; // means not to create a file 59: var postFileStream = fsObj.OpenTextFile(postfile, iomode, create); 60: var postData = postFileStream.ReadAll(); 61: postFileStream.Close(); 62: return postData; 63: } 64: 65: function doNothing() 66: { 67: // do nothing 68: } 69: 70: function deletePostFile(postfile) 71: { 72: if (fsObj.FileExists(postfile) == true) { 73: fsObj.DeleteFile(postfile); 74: } 75: } 76: 77: function SwstQuit(exitStatus) 78: { 79: switch(exitStatus) { 80: case 0: 81: WScript.Quit(0); 82: case 1: 83: WScript.Echo("[Tape copy Post-processing] The number of the arguments is incorrect."); 84: WScript.Quit(2); 85: default: 86: WScript.Echo("[Tape copy Post-processing] The script exited abnormally."); 87: WScript.Quit(4); 88: } 89: } 90: 91: function getDataPathName() 92: { 93: return WshShell.RegRead(getSetupInfoKey() + "\\etcPathName") + "\\etc\\backup\\data\\DEFAULT"; 94: } 95: 96: function getSetupInfoKey() 97: { 98: var nodeName = WshEnv.Item("SWSTGNODE"); 99: if( nodeName != "" ){ 100: return "HKEY_LOCAL_MACHINE\\SOFTWARE\\Fujitsu\\AdvancedCopy Manager\\CurrentVersion\\" + nodeName; 101: } 102: return "HKEY_LOCAL_MACHINE\\SOFTWARE\\Fujitsu\\AdvancedCopy Manager\\CurrentVersion"; 103: } 104: 105: function getPutFileName(deviceName){ 106: var fileName; 107: fileName = deviceName; 108: return(fileName); 109: } |
Point
The backup volume is locked and unlocked by programs, not scripts. This means that the tape copy pre-processing script is executed immediately before the volume is locked, and the tape copy post-processing script is executed immediately after the volume is unlocked. The pre-processing and post-processing scripts for tape copying do not perform any actual processing.
Figure A.1 Relationship between backup volume locking/unlocking and pre-processing and post-processing of the script
Note
If, during tape copy pre-processing, the locking process fails because of the need to avoid a temporary access conflict with another application, the locking process will be retried. If the specified number of retries is exceeded, the command terminates abnormally. This indicates that one or more processes are still using the backup volume. The user should take appropriate measures such as terminating applications or services to prevent the volume from being used by other processes. Note that the specified number of retries can be changed by creating a setup file called a "backup volume lock specification file". (Refer to "A.4.11 Backup volume lock specification file for tape copying in Windows" for details.)
Note that if the measures to prevent other processes from using the target volume are correctly implemented while the tape copying process is being performed, there is usually no need to create this file.