--- trunk/bin/BackupPC_burnArchiveCLI 2005/10/11 17:55:48 175 +++ trunk/bin/BackupPC_burnArchiveCLI 2005/10/11 18:32:27 176 @@ -34,7 +34,7 @@ my $tar_dir = $Conf{InstallDir}.'/'; $tar_dir .= $Conf{GzipTempDir} || die "GzipTempDir isn't defined in configuration"; -die "problem with $tar_dir, check GzipTempDir in configuration\n" unless (-d $tar_dir && -w $tar_dir); +die "problem with $tar_dir, check GzipTempDir in configuration\n" unless (-d $tar_dir); my $iso_dir = $Conf{InstallDir}.'/'; $iso_dir .= $Conf{ISOTempDir} || die "ISOTempDir isn't defined in configuration"; @@ -132,9 +132,10 @@ my $sth_archive_backup = $dbh->prepare( qq{ select backup_id, + archive_id, hosts.name as host, shares.name as share, - backups.num as num + backups.num as num, from archive_backup join archive on archive_id = archive.id join backups on backup_id = backups.id @@ -143,6 +144,12 @@ where archive.dvd_nr = ? }); +my $sth_archive_burned = $dbh->prepare( qq{ + insert into archive_burned + (archive_id, iso_size) + values ( (select id from archive where dvd_nr =?), ?) +}); + foreach my $arc (@archives_to_burn) { exit if ($arc eq ']quit['); @@ -155,29 +162,43 @@ print "Working on DVD #$dvd_nr in $tmp_dir\n"; - my $iso_file = "${iso_dir}/${dvd_nr}.iso"; - - skip "ISO $iso_file allready exists" if (-e $iso_file); + my $list_file = my $iso_file = "${iso_dir}/${dvd_nr}"; + $list_file .= '.list'; + $iso_file .= '.iso'; + + if (-e $iso_file) { + print "ISO $iso_file allready exists\n"; + goto BURN; + } $sth_archive_backup->execute($dvd_nr); - print "Running mkisofs now...\n"; - - my $cmd = qq{ mkisofs -A BackupPC -gui -J -r -T --input-charset ISO-8859-2 -V $dvd_nr -o $iso_file -path-list - }; + open(my $list, "> $list_file") || skip "can't open $list_file: $!"; - open(my $mkisofs, "| $cmd 2>&1") || skip "can't run $cmd: $!"; + my $inc = 0; while (my $row = $sth_archive_backup->fetchrow_hashref) { my $tar_file = BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}); skip "can't find increment $tar_file: $!" unless (-r "$tar_dir/$tar_file"); - print $mkisofs "$tar_dir/$tar_file\n"; - } + print $list "$tar_dir/$tar_file\n"; + $inc++; - while(! -e $iso_file) { - sleep 1; } - print "Created $iso_file in ", fmt_time(time() - $t), "\n"; + print "Running mkisofs now for $inc increments...\n"; + + my $cmd = qq{ mkisofs -A BackupPC -gui -J -r -T --input-charset ISO-8859-2 -V $dvd_nr -o $iso_file -path-list $list_file }; + + system($cmd) == 0 or skip "can't run $cmd: $?"; + + my $size = (stat($iso_file))[7]; + + print "Created $iso_file [$size bytes] in ", fmt_time(time() - $t), "\n"; + +BURN: + # FIXME add call to cdrecord here! + $sth_archive_burned->execute($dvd_nr, $size); + print "Media burn for $dvd_nr recorded\n"; SKIP: