--- trunk/bin/BackupPC_burnArchiveCLI 2005/12/13 22:53:30 275 +++ trunk/bin/BackupPC_burnArchiveCLI 2006/01/15 14:00:14 287 @@ -1,8 +1,7 @@ #!/usr/bin/perl use strict; -#use lib "__INSTALLDIR__/lib"; -use lib "/data/backuppc-agi/lib"; +use lib "__INSTALLDIR__/lib"; use DBI; use BackupPC::Lib; @@ -296,6 +295,28 @@ $sth_archive_backup_parts->execute($dvd_nr); + if ($sth_archive_backup_parts->rows == 0) { + warn "ERROR: no backup parts found for $dvd_nr. You should re-create that DVD.\n"; + print "Do you want to delete invalid DVD #$dvd_nr now? [NO/yes]: "; + my $ok = ; + chomp($ok); + if (lc($ok) eq 'yes') { + print "Deleting DVD #$dvd_nr from database...\n"; + + $dbh->begin_work; + + my $sth_delete_dvd = $dbh->prepare( qq{ + delete from archive where dvd_nr = ? + } ); + $sth_delete_dvd->execute( $dvd_nr ); + $dbh->do( qq{ + select setval('dvd_nr', (select max(dvd_nr) from archive), true) + } ); + + $dbh->commit; + } + } + my @volumes; my $v; # emtpy volume my $v_size = 0; @@ -318,12 +339,14 @@ } push @volumes, $v if ($v); + #warn "# volumes: ",Dumper(\@volumes),"\n"; + my $volumes = $#volumes + 1; my $volume_nr = 1; foreach my $v (@volumes) { - print Dumper($v); + #print Dumper($v); my $iso_size = 0; my $disk_name = $dvd_nr; @@ -369,8 +392,8 @@ my $rel_path = $tar_file; if (-d "$tar_dir/$rel_path") { - $rel_path .= '/' . $p->{part_nr}; mkpath("$stage/$rel_path") unless (-d "$stage/$rel_path"); + $rel_path .= '/' . $p->{part_nr}; } $rel_path .= '.tar.gz'; @@ -379,7 +402,8 @@ add_symlink("$tar_dir/$rel_path", "$stage/$rel_path"); my $md5sum = $p->{md5} || die "no md5 in part ", Dumper($p); - print $md5 "$md5sum\s\s$rel_path\n" || die "can't write md5sum: $!"; + chomp($md5sum); + print $md5 "$md5sum $rel_path\n" || die "can't write md5sum: $!"; $parts_on_this_volume++; } @@ -409,8 +433,7 @@ print "Created $iso_file [$iso_size bytes] in ", fmt_time(time() - $t), "\n"; - # FIXME - #rmtree($stage) || warn "can't remove stage directory $stage: $!"; + rmtree($stage) || warn "can't remove stage directory $stage: $!"; } else { print "ISO $iso_file allready exists\n";