/****************************************************************************/ /* Created by: Jim Essinger */ /* Program: WEBBACKUP (CLP but could be CLLE program) */ /* Date: 2009-07-28 */ /* */ /* Purpose: Save the optical images in the IFS folder for the image */ /* catalog, then archive them to the TITAN server in a */ /* subfolder in the MIS folder */ /* */ /* */ /****************************************************************************/ /* MODIFIED INFORMATION */ /****************************************************************************/ /* DATE PROGRAMMER DESCRIPTION */ /* ---------- --------- ----------------------------------------------- */ /* CCYY-MM-DD */ /* */ /****************************************************************************/ WebBackup: PGM /* &DOW = Day of the week: 1 = Sunday ... 7 = Saturday */ DCL VAR(&DOW ) TYPE(*Char) LEN( 1) /* Subroutine Parms */ DCL VAR(&DayName ) TYPE(*Char) LEN( 3) DCL VAR(&ToFile ) TYPE(*Char) LEN(25) Dcl Var(&VolID ) Type(*Char) Len(30) Dcl Var(&User ) Type(*Char) Len(10) /* Date and time handling */ Dcl Var(&DateTime ) Type(*Char) Len(20) Dcl Var(&Time ) Type(*Char) Len(08) Dcl Var(&Year ) Type(*Char) Len( 4) Dcl Var(&Month ) Type(*Char) Len( 2) Dcl Var(&Day ) Type(*Char) Len( 2) /* Current Date for file naming */ RTVJOBA USER(&USER) DATETIME(&DATETIME) ChgVar Var(&Year ) Value(%SST(&DateTime 1 4)) ChgVar Var(&Month) Value(%SST(&DateTime 5 2)) ChgVar Var(&Day ) Value(%SST(&DateTime 7 2)) /* */ Call pgm(WGetDOW) Parm(&DOW) /* Depending on the day of the week do a Full or Partial or No save */ Select /* Sunday - Full Save */ when cond(&DOW *eq '1') Then(DO) /* Create new disk images for this save */ ADDIMGCLGE IMGCLG(BACKUPOPT) FROMFILE(*NEW) + TOFILE(SunSav01.bin) IMGCLGIDX(1) + IMGSIZ(*DVD4700) ADDIMGCLGE IMGCLG(BACKUPOPT) FROMFILE(*NEW) + TOFILE(SunSav02.bin) IMGCLGIDX(2) + IMGSIZ(*DVD4700) /* Activate the image catalog with the virtual drive */ LODIMGCLG IMGCLG(BACKUPOPT) DEV(OPTVRT01) WRTPTC(*NONE) /* initialize the virtual disks with unique volumn IDs */ CHGVAR VAR(&VOLID) VALUE(&Year *CAT '-' *CAT &Month + *CAT '-' *CAT &DAY *CAT '.Sun.01') LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*FIRST) INZOPT NEWVOL(&VOLID) DEV(OPTVRT01) CHECK(*NO) + ENDOPT(*LEAVE) CLEAR(*NO) CHGVAR VAR(&VOLID) VALUE(&Year *CAT '-' *CAT &Month + *CAT '-' *CAT &DAY *CAT '.Sun.02') LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*NEXT) INZOPT NEWVOL(&VOLID) DEV(OPTVRT01) CHECK(*NO) + ENDOPT(*LEAVE) CLEAR(*NO) /* Reload/Mount the first disk for the save */ LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*FIRST) OVRPRTF FILE(QSYSPRT) MAXRCDS(*NOMAX) OVRSCOPE(*JOB) /* Send a start time to track the total save time */ RTVJOBA DATETIME(&DATETIME) Chgvar &time value(%SST(&DateTime 9 2) *cat ':' + *cat %SST(&DateTime 11 2) *cat ':' *cat + %SST(&DateTime 13 2)) SNDMSG MSG('IFS save start time: ' *CAT &TIME) + TOUSR(&USER) /* Save all the IFS objects identified as web related */ SAV DEV('/qsys.lib/optvrt01.devd') + OBJ(('/directory') ('/directory02') ('/usr/local') + ('/web') ('/www')) SAVACT(*NO) + OUTPUT(*print) VOL(*MOUNTED) UPDHST(*YES) MONMSG MSGID(CPF3837) EXEC(DO) SNDNETMSG MSG('The IFS save missed some objects. + Check the error log file') TOUSRID((IT + MESSAGE)) EndDO RTVJOBA DATETIME(&DATETIME) CHGVAR VAR(&TIME) VALUE(%SST(&DATETIME 9 2) *CAT + ':' *CAT %SST(&DATETIME 11 2) *CAT ':' *CAT + %SST(&DATETIME 13 2)) SNDMSG MSG('IFS save end time: ' *CAT &TIME) + TOUSR(&USER) DLTOVR FILE(QSYSPRT) LVL(*JOB) LODIMGCLG IMGCLG(BACKUPOPT) DEV(OPTVRT01) + OPTION(*UNLOAD) WRTPTC(*NONE) RMVIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(2) RMVIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(1) SBMJOB CMD(QSH CMD('/QShell/MovIFSOptSave.qsh')) + JOB(MOVIFSAVE) JOBD(*USRPRF) JOBQ(WEBALL) + USER(*CURRENT) LOG(4 0 *SECLVL) + LOGCLPGM(*YES) EndDo /* Monday - No save - nothing changed since Sunday AM */ /* when cond(&DOW *eq '2') Then(Do) */ /* Tueday - Save Changed objects */ when cond(&DOW *eq '3') Then(Do) CHGVAR VAR(&DAYNAME) VALUE('Tue') CALLSUBR SUBR(DAILY) EndDo /* Wednesday - Save Changed objects */ when cond(&DOW *eq '4') Then(Do) CHGVAR VAR(&DAYNAME) VALUE('Wed') CALLSUBR SUBR(DAILY) EndDo /* Thurday - Save Changed objects */ when cond(&DOW *eq '5') Then(Do) CHGVAR VAR(&DAYNAME) VALUE('Thr') CALLSUBR SUBR(DAILY) EndDo /* Friday - Save Changed objects */ when cond(&DOW *eq '6') Then(Do) CHGVAR VAR(&DAYNAME) VALUE('Fri') CALLSUBR SUBR(DAILY) EndDo /* Saturday - No save - all will be saved tomorrow */ /* when cond(&DOW *eq '7') Then(Do) */ EndSelect /* End of the program */ Return /* Common Daily save code */ SUBR SUBR(DAILY) CHGVAR VAR(&TOFILE) VALUE(&DAYNAME *CAT 'Sav01.bin') ADDIMGCLGE IMGCLG(BACKUPOPT) FROMFILE(*NEW) + TOFILE(&ToFile) IMGCLGIDX(1) IMGSIZ(*DVD2600) LODIMGCLG IMGCLG(BACKUPOPT) DEV(OPTVRT01) WRTPTC(*NONE) CHGVAR VAR(&VOLID) VALUE(&Year *CAT '-' *CAT &Month + *CAT '-' *CAT &DAY *CAT '.' *CAT &DAYNAME *CAT + '.01') LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*FIRST) INZOPT NEWVOL(&VOLID) DEV(OPTVRT01) CHECK(*NO) + ENDOPT(*LEAVE) CLEAR(*NO) OVRPRTF FILE(QSYSPRT) MAXRCDS(*NOMAX) OVRSCOPE(*JOB) SAV DEV('/qsys.lib/optvrt01.devd') + OBJ(('/directory1') ('/directory2') ('/usr/local') + ('/web') ('/www')) SAVACT(*NO) OUTPUT(*print) + VOL(*MOUNTED) CHGPERIOD(*LASTSAVE) UPDHST(*NO) MONMSG MSGID(CPF3837) EXEC(DO) SNDNETMSG MSG('The IFS save missed some objects. + Check the error log file') TOUSRID((IT + MESSAGE)) EndDO DLTOVR FILE(QSYSPRT) LVL(*JOB) LODIMGCLG IMGCLG(BACKUPOPT) DEV(OPTVRT01) OPTION(*UNLOAD) + WRTPTC(*NONE) RMVIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(1) SBMJOB CMD(QSH CMD('/QShell/MovIFSOptSave.qsh')) + JOB(MOVIFSAVE) JOBD(*USRPRF) JOBQ(WEBALL) + USER(*CURRENT) LOG(4 0 *SECLVL) LOGCLPGM(*YES) ENDSUBR ENDPGM /****************************************************************************/ /* Created by: Jim Essinger */ /* Program: WGETDOW (CLLE Program) */ /* Date: 2009-08-04 */ /* */ /* Purpose: Using the current date, calculate the current day of the */ /* week, and pass the number back to the calling program as */ /* a character value. */ /* */ /****************************************************************************/ /* MODIFIED INFORMATION */ /****************************************************************************/ /* DATE PROGRAMMER DESCRIPTION */ /* ---------- --------- ----------------------------------------------- */ /* CCYY-MM-DD */ /* */ /****************************************************************************/ START: PGM PARM(&DOWC) /* Parms for API program CEELOCT */ /* &LilDays = number of days since 10/14/1582 */ /* &LilSecs = Number of seconds since 10/14/1582 */ /* &CurrGreg = Current date in CCYYMMDDHHmmSS999xxxxxx */ DCL VAR(&LILDATE ) TYPE(*INT) LEN(4) DCL VAR(&LILSECS ) TYPE(*Char) LEN(8) DCL VAR(&CurrGreg ) TYPE(*Char) LEN(23) /* &DOW = Day of the week: 1 = Sunday ... 7 = Saturday */ DCL VAR(&DOW ) TYPE(*INT) LEN(4) DCL VAR(&DOWC ) TYPE(*Char) LEN(1) /* Get the current Date with API - Micorseconds are all zeros */ CALLPRC PRC(CEELOCT) PARM(&Lildate &Lilsecs &Currgreg *OMIT) /* Get the Day of the Week for current date */ CALLPRC PRC(CEEDYWK) PARM(&Lildate &DOW *OMIT) /* Translate the INT to CHAR to return to the calling program */ CHGVAR VAR(&DOWC) VALUE(&DOW) Return End: EndPgm ********************************************************************************************* In a folder on the IFS called QSHELL I have this file called MovIFSOptSav.qsh ************Beginning of data************** #!/bin/qsh # Move the disk image files to the TITAN Server mv -f /backupOPT/*.bin /QNTC/SERVER/FOLDER/SubFolder 1> /backupOPT/Messages.txt 2> /backupOPT/Errors.txt || exit 7 ************End of Data********************