11 |
use Term::Menus; |
use Term::Menus; |
12 |
use File::Which; |
use File::Which; |
13 |
use File::Path; |
use File::Path; |
14 |
|
use Filesys::Df; |
15 |
|
|
16 |
use Data::Dumper; |
use Data::Dumper; |
17 |
|
|
194 |
|
|
195 |
$sth->execute(); |
$sth->execute(); |
196 |
|
|
197 |
|
sub fmt_mb($) { |
198 |
|
my $s = shift; |
199 |
|
die "missing size" unless defined($s); |
200 |
|
$s /= (1024*1024); |
201 |
|
return sprintf("%.2f Mb", $s); |
202 |
|
} |
203 |
|
|
204 |
sub fmt_archive($) { |
sub fmt_archive($) { |
205 |
my $row = shift || die; |
my $row = shift || die; |
206 |
|
|
207 |
$row->{'date'} =~ s/\.\d+$//; |
$row->{'date'} =~ s/\.\d+$//; |
208 |
$row->{'copies'} =~ s/^\s*0+\s*$/no/; |
$row->{'copies'} =~ s/^\s*0+\s*$/no/; |
|
$row->{'total_size'} /= (1024*1024); |
|
209 |
|
|
210 |
my $copies = 'copies'; |
my $copies = 'copies'; |
211 |
$copies = 'copy' if ($row->{'copies'} == 1); |
$copies = 'copy' if ($row->{'copies'} == 1); |
212 |
|
|
213 |
return |
return |
214 |
sprintf("%d by %s on %s, %s %s [%.2f Mb]", |
sprintf("%d by %s on %s, %s %s [%s]", |
215 |
$row->{'dvd_nr'}, |
$row->{'dvd_nr'}, |
216 |
$row->{'username'}, |
$row->{'username'}, |
217 |
$row->{'date'}, |
$row->{'date'}, |
218 |
$row->{'copies'}, $copies, |
$row->{'copies'}, $copies, |
219 |
$row->{'total_size'}, |
fmt_mb($row->{'total_size'}), |
220 |
); |
); |
221 |
} |
} |
222 |
|
|
389 |
$v = {}; |
$v = {}; |
390 |
} |
} |
391 |
$v->{size} += $row->{part_size}; |
$v->{size} += $row->{part_size}; |
392 |
|
$v_size += $row->{part_size}; |
393 |
|
|
394 |
# this part |
# this part |
395 |
my $p = { |
my $p = { |
396 |
filename => BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}), |
filename => BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}), |
402 |
} |
} |
403 |
push @volumes, $v if ($v); |
push @volumes, $v if ($v); |
404 |
|
|
405 |
#warn "# volumes: ",Dumper(\@volumes),"\n"; |
#warn "# volumes: ",Dumper(\@volumes)," total size: ", fmt_mb($v_size), "\n"; |
406 |
|
|
407 |
|
# check available disk space |
408 |
|
|
409 |
|
my $df = df($iso_dir); |
410 |
|
if ($df < $v_size) { |
411 |
|
warn "ABORTED: not enough disk space to create ISO ! [need ", fmt_mb($v_size), " have ", fmt_mb( df($iso_dir) ), "]\n"; |
412 |
|
next; |
413 |
|
} |
414 |
|
|
415 |
my $volumes = $#volumes + 1; |
my $volumes = $#volumes + 1; |
416 |
my $volume_nr = 1; |
my $volume_nr = 1; |
429 |
$disk_name .= ' ' . $volume_nr . '/' . $volumes; |
$disk_name .= ' ' . $volume_nr . '/' . $volumes; |
430 |
} |
} |
431 |
|
|
432 |
print "Processing DVD #$dvd_nr, volume $volume_nr/$volumes\n"; |
print "Processing DVD #$dvd_nr, volume $volume_nr/$volumes [", fmt_mb($v->{size}), "]\n"; |
433 |
|
|
434 |
my $iso_file = my $xml_file = my $stage = |
my $iso_file = my $xml_file = my $stage = |
435 |
"${iso_dir}/${dvd_nr}"; |
"${iso_dir}/${dvd_nr}"; |