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