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();
%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;
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;
return $out;
}
-sub curr_time {
- return strftime($t_fmt,localtime());
-}
+=for later
my $hsn_cache;
return $same;
}
+=cut
#----- main
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;
}
# 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) {
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);
print STDERR " FAILED, marking this backup deleted";
backup_inc_deleted( $row->{backup_id} );
}
+=cut
print ", dur: ",fmt_time(time() - $t), "\n";