[BACK]Return to epickup.pl CVS log [TXT][DIR] Up to [local] / wpscripts / epickup

Annotation of wpscripts/epickup/epickup.pl, Revision 1.1.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