58 |
|
|
59 |
my %opt; |
my %opt; |
60 |
|
|
61 |
if ( !getopts("cdm:v:ijf", \%opt ) ) { |
if ( !getopts("cdm:v:ijfq", \%opt ) ) { |
62 |
print STDERR <<EOF; |
print STDERR <<EOF; |
63 |
usage: $0 [-c|-d] [-m num] [-v|-v level] [-i|-j|-f] |
usage: $0 [-c|-d] [-m num] [-v|-v level] [-i|-j|-f] |
64 |
|
|
70 |
-i update Hyper Estraier full text index |
-i update Hyper Estraier full text index |
71 |
-j update full text, don't check existing files |
-j update full text, don't check existing files |
72 |
-f don't do anything with full text index |
-f don't do anything with full text index |
73 |
|
-q be quiet for hosts without changes |
74 |
|
|
75 |
Option -j is variation on -i. It will allow faster initial creation |
Option -j is variation on -i. It will allow faster initial creation |
76 |
of full-text index from existing database. |
of full-text index from existing database. |
105 |
return strftime($t_fmt,localtime()); |
return strftime($t_fmt,localtime()); |
106 |
} |
} |
107 |
|
|
|
my $hest_db; |
|
108 |
my $hest_node; |
my $hest_node; |
109 |
|
|
|
sub signal { |
|
|
my($sig) = @_; |
|
|
if ($hest_db) { |
|
|
print "\nCaught a SIG$sig--syncing database and shutting down\n"; |
|
|
$hest_db->sync(); |
|
|
$hest_db->close(); |
|
|
} |
|
|
exit(0); |
|
|
} |
|
|
|
|
|
$SIG{'INT'} = \&signal; |
|
|
$SIG{'QUIT'} = \&signal; |
|
|
|
|
110 |
sub hest_update { |
sub hest_update { |
111 |
|
|
112 |
my ($host_id, $share_id, $num) = @_; |
my ($host_id, $share_id, $num) = @_; |
128 |
|
|
129 |
print " opening index $index_node_url"; |
print " opening index $index_node_url"; |
130 |
if ($index_node_url) { |
if ($index_node_url) { |
131 |
$hest_node ||= Search::Estraier::Node->new($index_node_url); |
$hest_node ||= Search::Estraier::Node->new( |
132 |
$hest_node->set_auth('admin', 'admin'); |
url => $index_node_url, |
133 |
|
user => 'admin', |
134 |
|
passwd => 'admin', |
135 |
|
croak_on_error => 1, |
136 |
|
); |
137 |
print " via node URL"; |
print " via node URL"; |
138 |
} else { |
} else { |
139 |
die "don't know how to use Hyper Estraier Index $index_node_url"; |
die "don't know how to use Hyper Estraier Index $index_node_url"; |
184 |
|
|
185 |
if ($results == 0) { |
if ($results == 0) { |
186 |
print " - no new files\n"; |
print " - no new files\n"; |
187 |
last; |
return; |
188 |
} else { |
} else { |
189 |
print " - $results files: "; |
print " - $results files: "; |
190 |
} |
} |
202 |
my $uri = 'file:///' . $fid; |
my $uri = 'file:///' . $fid; |
203 |
|
|
204 |
unless ($skip_check) { |
unless ($skip_check) { |
205 |
my $id = ($hest_db || $hest_node)->uri_to_id($uri); |
my $id = $hest_node->uri_to_id($uri); |
206 |
next unless ($id == -1); |
next if ($id && $id == -1); |
207 |
} |
} |
208 |
|
|
209 |
# create a document object |
# create a document object |
463 |
} |
} |
464 |
|
|
465 |
$host_nr++; |
$host_nr++; |
|
print "host ", $hosts->{$host_key}->{'host'}, " [", |
|
|
$host_nr, "/", ($#hosts + 1), "]: "; |
|
|
|
|
466 |
# get backups for a host |
# get backups for a host |
467 |
my @backups = $bpc->BackupInfoRead($hostname); |
my @backups = $bpc->BackupInfoRead($hostname); |
468 |
my $incs = scalar @backups; |
my $incs = scalar @backups; |
|
print "$incs increments\n"; |
|
469 |
|
|
470 |
|
my $host_header = sprintf("host %s [%d/%d]: %d increments\n", |
471 |
|
$hosts->{$host_key}->{'host'}, |
472 |
|
$host_nr, |
473 |
|
($#hosts + 1), |
474 |
|
$incs |
475 |
|
); |
476 |
|
print $host_header unless ($opt{q}); |
477 |
|
|
478 |
my $inc_nr = 0; |
my $inc_nr = 0; |
479 |
$beenThere = {}; |
$beenThere = {}; |
480 |
|
|
486 |
my $backupNum = $backup->{'num'}; |
my $backupNum = $backup->{'num'}; |
487 |
my @backupShares = (); |
my @backupShares = (); |
488 |
|
|
489 |
printf("%-10s %2d/%-2d #%-2d %s %5s/%5s files (date: %s dur: %s)\n", |
my $share_header = sprintf("%-10s %2d/%-2d #%-2d %s %5s/%5s files (date: %s dur: %s)\n", |
490 |
$hosts->{$host_key}->{'host'}, |
$hosts->{$host_key}->{'host'}, |
491 |
$inc_nr, $incs, $backupNum, |
$inc_nr, $incs, $backupNum, |
492 |
$backup->{type} || '?', |
$backup->{type} || '?', |
494 |
strftime($t_fmt,localtime($backup->{startTime})), |
strftime($t_fmt,localtime($backup->{startTime})), |
495 |
fmt_time($backup->{endTime} - $backup->{startTime}) |
fmt_time($backup->{endTime} - $backup->{startTime}) |
496 |
); |
); |
497 |
|
print $share_header unless ($opt{q}); |
498 |
|
|
499 |
my $files = BackupPC::View->new($bpc, $hostname, \@backups, 1); |
my $files = BackupPC::View->new($bpc, $hostname, \@backups, 1); |
500 |
foreach my $share ($files->shareList($backupNum)) { |
foreach my $share ($files->shareList($backupNum)) { |
508 |
# skip if allready in database! |
# skip if allready in database! |
509 |
next if ($count > 0); |
next if ($count > 0); |
510 |
|
|
511 |
|
# dump host and share header for -q |
512 |
|
if ($opt{q}) { |
513 |
|
if ($host_header) { |
514 |
|
print $host_header; |
515 |
|
$host_header = undef; |
516 |
|
} |
517 |
|
print $share_header; |
518 |
|
} |
519 |
|
|
520 |
# dump some log |
# dump some log |
521 |
print curr_time," ", $share; |
print curr_time," ", $share; |
522 |
|
|