1 |
#!/usr/bin/perl |
#!/usr/bin/perl |
2 |
|
|
3 |
use strict; |
use strict; |
4 |
#use lib "__INSTALLDIR__/lib"; |
use lib "__INSTALLDIR__/lib"; |
|
use lib "/data/backuppc-agi/lib"; |
|
5 |
|
|
6 |
use DBI; |
use DBI; |
7 |
use BackupPC::Lib; |
use BackupPC::Lib; |
295 |
|
|
296 |
$sth_archive_backup_parts->execute($dvd_nr); |
$sth_archive_backup_parts->execute($dvd_nr); |
297 |
|
|
298 |
|
if ($sth_archive_backup_parts->rows == 0) { |
299 |
|
warn "ERROR: no backup parts found for $dvd_nr. You should re-create that DVD.\n"; |
300 |
|
print "Do you want to delete invalid DVD #$dvd_nr now? [NO/yes]: "; |
301 |
|
my $ok = <STDIN>; |
302 |
|
chomp($ok); |
303 |
|
if (lc($ok) eq 'yes') { |
304 |
|
print "Deleting DVD #$dvd_nr from database...\n"; |
305 |
|
|
306 |
|
$dbh->begin_work; |
307 |
|
|
308 |
|
my $sth_delete_dvd = $dbh->prepare( qq{ |
309 |
|
delete from archive where dvd_nr = ? |
310 |
|
} ); |
311 |
|
$sth_delete_dvd->execute( $dvd_nr ); |
312 |
|
$dbh->do( qq{ |
313 |
|
select setval('dvd_nr', (select max(dvd_nr) from archive), true) |
314 |
|
} ); |
315 |
|
|
316 |
|
$dbh->commit; |
317 |
|
} |
318 |
|
} |
319 |
|
|
320 |
my @volumes; |
my @volumes; |
321 |
my $v; # emtpy volume |
my $v; # emtpy volume |
322 |
my $v_size = 0; |
my $v_size = 0; |
339 |
} |
} |
340 |
push @volumes, $v if ($v); |
push @volumes, $v if ($v); |
341 |
|
|
342 |
|
#warn "# volumes: ",Dumper(\@volumes),"\n"; |
343 |
|
|
344 |
my $volumes = $#volumes + 1; |
my $volumes = $#volumes + 1; |
345 |
my $volume_nr = 1; |
my $volume_nr = 1; |
346 |
|
|
347 |
foreach my $v (@volumes) { |
foreach my $v (@volumes) { |
348 |
|
|
349 |
print Dumper($v); |
#print Dumper($v); |
350 |
|
|
351 |
my $iso_size = 0; |
my $iso_size = 0; |
352 |
my $disk_name = $dvd_nr; |
my $disk_name = $dvd_nr; |
392 |
my $rel_path = $tar_file; |
my $rel_path = $tar_file; |
393 |
|
|
394 |
if (-d "$tar_dir/$rel_path") { |
if (-d "$tar_dir/$rel_path") { |
|
$rel_path .= '/' . $p->{part_nr}; |
|
395 |
mkpath("$stage/$rel_path") unless (-d "$stage/$rel_path"); |
mkpath("$stage/$rel_path") unless (-d "$stage/$rel_path"); |
396 |
|
$rel_path .= '/' . $p->{part_nr}; |
397 |
} |
} |
398 |
$rel_path .= '.tar.gz'; |
$rel_path .= '.tar.gz'; |
399 |
|
|
402 |
add_symlink("$tar_dir/$rel_path", "$stage/$rel_path"); |
add_symlink("$tar_dir/$rel_path", "$stage/$rel_path"); |
403 |
|
|
404 |
my $md5sum = $p->{md5} || die "no md5 in part ", Dumper($p); |
my $md5sum = $p->{md5} || die "no md5 in part ", Dumper($p); |
405 |
print $md5 "$md5sum\s\s$rel_path\n" || die "can't write md5sum: $!"; |
chomp($md5sum); |
406 |
|
print $md5 "$md5sum $rel_path\n" || die "can't write md5sum: $!"; |
407 |
|
|
408 |
$parts_on_this_volume++; |
$parts_on_this_volume++; |
409 |
} |
} |
433 |
|
|
434 |
print "Created $iso_file [$iso_size bytes] in ", fmt_time(time() - $t), "\n"; |
print "Created $iso_file [$iso_size bytes] in ", fmt_time(time() - $t), "\n"; |
435 |
|
|
436 |
# FIXME |
rmtree($stage) || warn "can't remove stage directory $stage: $!"; |
|
#rmtree($stage) || warn "can't remove stage directory $stage: $!"; |
|
437 |
|
|
438 |
} else { |
} else { |
439 |
print "ISO $iso_file allready exists\n"; |
print "ISO $iso_file allready exists\n"; |