Annotation of wpscripts/epickup/epickup.pl, Revision 1.1
1.1 ! yason 1: #!/usr/bin/perl
! 2:
! 3: # Back up EPD files. Steps are:
! 4: # - grep printed and not backed up EPD files from db.
! 5: # - iterate over result; rar file using tmp/ dir in spool.
! 6: # - put archive into spool.
! 7: # - goto step 2 if there are more files.
! 8:
! 9:
! 10: use dbops;
! 11: use conv;
! 12: use strict;
! 13: use log;
! 14:
! 15: # SIGINT catcher
! 16: $SIG{INT} = \&sigint;
! 17: sub sigint()
! 18: {
! 19: log::stdout("caught interrupt signal (exiting).\n");
! 20: exit(1);
! 21: }
! 22:
! 23: our $SPOOL_EPDZ_DIR = "/usr/backup/epd/zayavki";
! 24: our $SPOOL_EPDP_DIR = "/usr/backup/epd/proba";
! 25: our @ID;
! 26: our $ID_ref;
! 27: our @paths;
! 28: our $paths_ref;
! 29: our $i;
! 30:
! 31: dbops::connect();
! 32: dbops::select();
! 33:
! 34: # EPD zayavki
! 35: ($ID_ref, $paths_ref) = dbops::fetch($dbops::EPD_ZAYAVKA_T);
! 36: @ID = @$ID_ref;
! 37: @paths = @$paths_ref;
! 38:
! 39:
! 40: log::stdout("[working on epd-zayavki] ($#ID elements)\n");
! 41: for ($i = 0; $i < $#paths; $i++)
! 42: {
! 43: # db::fetch() gives us converted pathnames
! 44: if (! -e $paths[$i])
! 45: {
! 46: log::err("$paths[$i] doesn't exist");
! 47: log::put("item with ID=$ID[$i] is broken (not found). FIXING");
! 48:
! 49: # XXX here we mark file as backed up even it doesn't exist.
! 50: dbops::fixate($ID[$i]);
! 51: next;
! 52: # NOTREACHED
! 53: }
! 54:
! 55: log::stdout("compressing $paths[$i] into spool..\n");
! 56:
! 57: system("/usr/local/bin/rar a -rr10% -ep '$SPOOL_EPDZ_DIR/".conv::basename($paths[$i]).".rar'"." \"$paths[$i]\"");
! 58: if( ($? >> 8) == 0)
! 59: {
! 60: # 0 exit status
! 61: log::stdout(" $paths[$i] compressed\n");
! 62: log::put("created archive $paths[$i].rar");
! 63:
! 64: # XXX additional check, maybe unneeded?
! 65: if (-e "$SPOOL_EPDZ_DIR/".conv::basename($paths[$i]).".rar")
! 66: {
! 67: # modify DB
! 68: dbops::markok($ID[$i]);
! 69: log::put("ID=$ID[$i] marked as backed up");
! 70: }
! 71: else
! 72: {
! 73: # something strange
! 74: # do not modify db
! 75: log::err("$SPOOL_EPDZ_DIR/".conv::basename($paths[$i]).".rar can't stat after compressing");
! 76: }
! 77: }
! 78: else
! 79: {
! 80: # error
! 81: log::stdout(" $paths[$i] compression failed!\n");
! 82: }
! 83:
! 84:
! 85: } # epd-zayavki
! 86:
! 87: # probas
! 88: ($ID_ref, $paths_ref) = dbops::fetch($dbops::EPD_PROBA_T);
! 89: @ID = @$ID_ref;
! 90: @paths = @$paths_ref;
! 91:
! 92: log::stdout("[working on epd-probas] ($#ID elements)\n");
! 93: for ($i = 0; $i < $#paths; $i++)
! 94: {
! 95: # db::fetch() gives us converted pathnames
! 96: if (! -e $paths[$i])
! 97: {
! 98: log::err("$paths[$i] doesn't exist");
! 99: log::put("item with ID=$ID[$i] is broken (not found). FIXING");
! 100:
! 101: # XXX here we mark file as backed up even it doesn't exist.
! 102: dbops::fixate($ID[$i]);
! 103: next;
! 104: # NOTREACHED
! 105: }
! 106:
! 107: log::stdout("compressing $paths[$i] into spool..\n");
! 108:
! 109: system("/usr/local/bin/rar a -rr10% -ep $SPOOL_EPDP_DIR/".conv::basename($paths[$i]).".rar"." $paths[$i]");
! 110: if( ($? >> 8) == 0)
! 111: {
! 112: # 0 exit status
! 113: log::stdout(" $paths[$i] compressed\n");
! 114: log::put("created archive $paths[$i].rar");
! 115:
! 116: # XXX additional check, maybe unneeded?
! 117: if (-e "$SPOOL_EPDP_DIR/".conv::basename($paths[$i]).".rar")
! 118: {
! 119: # modify DB
! 120: dbops::markok($ID[$i]);
! 121: log::put("ID=$ID[$i] marked as backed up");
! 122: }
! 123: else
! 124: {
! 125: # something strange
! 126: # do not modify db
! 127: log::err("$SPOOL_EPDP_DIR/".conv::basename($paths[$i]).".rar can't stat after compressing");
! 128: }
! 129: }
! 130: else
! 131: {
! 132: # error
! 133: log::stdout(" $paths[$i] compression failed!\n");
! 134: }
! 135:
! 136:
! 137: } # epd-probas
! 138:
! 139:
! 140: dbops::disconnect();
CVSweb