git mv BackupPC_ASA_PostDump_SearchUpdate BackupPC_ASA_SearchUpdate
[BackupPC.git] / bin / BackupPC_ASA_PostArchive_Update
index 442c027..1ab0965 100755 (executable)
@@ -7,67 +7,49 @@ use DBI;
 use BackupPC::Lib;
 use BackupPC::View;
 use BackupPC::Attrib qw/:all/;
-use Data::Dumper;
+#use Data::Dumper;
+use Data::Dump qw(dump);
 use Time::HiRes qw/time/;
 use POSIX qw/strftime/;
 use Cwd qw/abs_path/;
-use File::Which;
-use Archive::Tar::Streamed;
-use Algorithm::Diff;
+#use Archive::Tar::Streamed;
+#use Algorithm::Diff;
 use Getopt::Std;
 use File::Slurp;
-use File::Pid;
 
 =head1 NAME
 
-BackupPC_incPartsUpdate
+BackupPC_ASA_PostArchive_Update
 
 =head1 DESCRIPTION
 
-Create C<.tar.gz> increments on disk calling C<BackupPC_tarIncCreate>.
-
-Following options are supported (but all are optional):
-
-=over 4
-
-=item -h hostname
-
-Update parts for just single C<hostname>
-
-=item -c
-
-Force check for tar archives which exist on disk
-
-=item -d
-
-Turn debugging output
-
-=back
+       # /etc/BackupPC/pc/dvd_tar.pl
 
 =cut
 
-my %opt;
-getopts("cdh:", \%opt );
+warn "## ARGV=",dump @ARGV;
 
-my $debug = $opt{d};
-my $check = $opt{c} && print STDERR "NOTICE: tar archive check forced\n";
-
-my $pid_path = abs_path($0);
-$pid_path =~ s/\W+/_/g;
+my $args;
+my $name;
+foreach ( @ARGV ) {
+       my $v = $_;
+       if ( m/(\w+)=(.+)/ ) {
+               $name = $1;
+               $v = $2;
+       }
+       if ( $name =~ m/List/ ) {
+               push @{ $args->{$name} }, $v;
+       } else {
+               $args->{$name} = $v;
+       }
+}
 
-my $pidfile = new File::Pid({
-       file => "/tmp/$pid_path",
-});
+warn "args = ",dump($args);
 
-if (my $pid = $pidfile->running ) {
-       die "$0 already running: $pid\n";
-} elsif ($pidfile->pid ne $$) {
-       $pidfile->remove;
-       $pidfile = new File::Pid;
-}
+# FIXME
+my $debug = $ENV{DEBUG} || 1;
+my $check = 0;
 
-print STDERR "$0 using pid ",$pidfile->pid," file ",$pidfile->file,"\n";
-$pidfile->write;
 
 my $bpc = BackupPC::Lib->new || die "can't create BackupPC::Lib";
 my %Conf = $bpc->Conf();
@@ -76,15 +58,7 @@ use BackupPC::Search;
 %BackupPC::Search::Conf = %Conf;
 
 my $path = abs_path($0);
-$path =~ s#/[^/]+$#/#;
-my $tarIncCreate = $path .= 'BackupPC_tarIncCreate';
-
-die "can't find $tarIncCreate: $!\n" unless (-x $tarIncCreate);
-
-my $bin;
-foreach my $c (qw/gzip md5sum/) {
-       $bin->{$c} = which($c) || die "$0 needs $c, install it\n";
-}
+$path =~ s{/[^/]+$}{/}; # FIXME remove?
 
 $|=1;
 
@@ -95,13 +69,14 @@ my $t_fmt = '%Y-%m-%d %H:%M:%S';
 my $dsn = $Conf{SearchDSN} || die "Need SearchDSN in config.pl\n";
 my $user = $Conf{SearchUser} || '';
 
-my $dbh = DBI->connect($dsn, $user, "", { RaiseError => 1, AutoCommit => 0 });
+my $dbh = DBI->connect($Conf{SearchDSN}, $Conf{SearchUser}, "", { RaiseError => 1, AutoCommit => 0 });
 
-my $tar_dir = $Conf{GzipTempDir};
+#---- subs ----
 
-die "problem with $tar_dir, check GzipTempDir in configuration\n" unless (-d $tar_dir && -w $tar_dir);
 
-#---- subs ----
+sub curr_time {
+       return strftime($t_fmt,localtime());
+}
 
 sub fmt_time {
        my $t = shift || return;
@@ -112,9 +87,7 @@ sub fmt_time {
        return $out;
 }
 
-sub curr_time {
-       return strftime($t_fmt,localtime());
-}
+=for later
 
 my $hsn_cache;
 
@@ -371,6 +344,7 @@ sub tar_check($$$$) {
        return $same;
 }
 
+=cut
 
 #----- main
 
@@ -400,14 +374,18 @@ $sth->execute();
 my $num_backups = $sth->rows;
 my $curr_backup = 1;
 
-if ($opt{h}) {
-       warn "making increments just for host $opt{h}\n";
-}
-
 while (my $row = $sth->fetchrow_hashref) {
 
-       if ($opt{h} && $row->{host} ne $opt{h}) {
-               warn "skipped $row->{host}\n" if ($debug);
+       my $found;
+       foreach ( 0 .. $#{ $args->{HostList} } ) {
+               if ( $args->{'HostList'}->[$_] eq $row->{host}
+               &&   $args->{'BackupList'}->[$_] eq $row->{num} ) {
+                       $found = 1;
+               }
+       }
+
+       if ( ! $found ) {
+               warn "skipped ",dump($row);
                next;
        }
 
@@ -418,7 +396,7 @@ while (my $row = $sth->fetchrow_hashref) {
        # this will return -1 if file doesn't exist
        my $size = BackupPC::Search::get_tgz_size_by_name($tar_file);
 
-       print "# host: ".$row->{host}.", share: ".$row->{'share'}.", backup_num:".$row->{num}." size: $size backup.size: ", $row->{inc_size},"\n" if ($opt{d});
+       print "# host: ".$row->{host}.", share: ".$row->{'share'}.", backup_num:".$row->{num}." size: $size backup.size: ", $row->{inc_size},"\n" if $debug;
 
        if ( $row->{'inc_size'} != -1 && $size != -1 && $row->{'inc_size'} >= $size && $row->{parts} == $row->{backup_parts}) {
                if ($check) {
@@ -433,6 +411,7 @@ while (my $row = $sth->fetchrow_hashref) {
 
        my $t = time();
 
+=for later
        # re-create archive?
        my $cmd = qq[ $tarIncCreate -h "$row->{host}" -s "$row->{share}" -n $row->{num} -f ];
        print STDERR "## $cmd\n" if ($debug);
@@ -441,6 +420,7 @@ while (my $row = $sth->fetchrow_hashref) {
                print STDERR " FAILED, marking this backup deleted";
                backup_inc_deleted( $row->{backup_id} );
        }
+=cut
 
        print ", dur: ",fmt_time(time() - $t), "\n";