Базы данных - ЛИНТЕР - статьи




Листинг 10


############################################################## /*--------------------------------------------------------*/ Variables: USERNAME ="SYSTEM"; /* user name */ USERPASSWORD ="MANAGER"; /* user password */ ARCDEVICE ="./"; /* for new files */ ARCFNAME =""; /* new name for old file */ CHKSUF = ".lhb"; /* suffix for checkpoint file */ NUMFILE = 1; /*--------------------------------------------------------*/

Rights: Everyday ( time = '02:00' ) { NUMFILE = 1; while ( NUMFILE < 5 ) { if ( exist ( ARCDEVICE+"arc" + TOSTR(NUMFILE) + ".lhb" ) ) { if ( NUMFILE == 1 ) delete ( ARCDEVICE+"arc" + TOSTR(NUMFILE) + ".lhb" ); else rename ( ARCDEVICE+"arc" + TOSTR(NUMFILE) + ".lhb" , ARCDEVICE+"arc" + TOSTR(NUMFILE-1) + ".lhb" ); } /* if */ NUMFILE = NUMFILE + 1; } /* while */ rename ( ARCDEVICE+"db.lhb" , ARCDEVICE+"arc" + TOSTR(NUMFILE-1) + ".lhb" ); backup ( "s -u "+USERNAME+"/"+USERPASSWORD+" -f "+ARCDEVICE+"db.lhb"+" -qc DF" ); logprint ( CTIMESTAMP() + " --- File " + "db" + CHKSUF + " created.\n" ); Exception: /* for everyday */ print ( "Error=" + TOSTR(CERROR) + " , LinError=" + TOSTR(LINERROR) + " , SysError=" + TOSTR(SYSERROR) ); logprint ( CTIMESTAMP() + " --- Error=" + TOSTR(CERROR) + " , LinError=" + TOSTR(LINERROR) + " , SysError=" + TOSTR(SYSERROR) ); stop; } /* Everyday */ /*--------------------------------------------------------*/

Special: before /* just after the start */ { NUMFILE = 1; while ( NUMFILE < 5 ) { if ( exist ( ARCDEVICE+"arc" + TOSTR(NUMFILE) + ".lhb" ) ) { if ( NUMFILE == 1 ) delete ( ARCDEVICE+"arc" + TOSTR(NUMFILE) + ".lhb" ); else rename ( ARCDEVICE+"arc" + TOSTR(NUMFILE) + ".lhb" , ARCDEVICE+"arc" + TOSTR(NUMFILE-1) + ".lhb" ); } /* if */ NUMFILE = NUMFILE + 1; } /* while */ rename ( ARCDEVICE+"db.lhb" , ARCDEVICE+"arc" + TOSTR(NUMFILE-1) + ".lhb" ); backup ( "s -u "+USERNAME+"/"+USERPASSWORD+" -f "+ARCDEVICE+"db.lhb"+" -qc DF" ); logprint ( CTIMESTAMP() + " --- File " + "db" + CHKSUF + " created.\n" ); } after /* after stop or Ctrl-C */ { print ( " --- Stop backup system" ); if ( CERROR != 0 ) logprint ( CTIMESTAMP() + " --- Error present: " + TOSTR(CERROR) ); logprint ( CTIMESTAMP() + " --- Stop backup system\n" ); } iferr /* global */ { print ( "Error=" + TOSTR(CERROR) + " , LinError=" + TOSTR(LINERROR) + " , SysError=" + TOSTR(SYSERROR) ); logprint ( CTIMESTAMP() + " --- Error=" + TOSTR(CERROR) + " , LinError=" + TOSTR(LINERROR) + " , SysError=" + TOSTR(SYSERROR) ); stop; }

/*--------------------------------------------------------*/ ###############################################################

Следующий пример включает в себя более сложную схему – с инкрементированием. Программа сохраняет базу данных при запуске, и затем каждый день в 02:00 добавляет накопленные изменения. Если при запуске lhb задать ключ -fl FILE.LOG, то история сохранения будет накапливаться в файле FILE.LOG




Содержание  Назад  Вперед