[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     ! 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