r8469@llin: dpavlin | 2005-10-11 19:55:44 +0200
authordpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Tue, 11 Oct 2005 17:55:48 +0000 (17:55 +0000)
committerdpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Tue, 11 Oct 2005 17:55:48 +0000 (17:55 +0000)
 create ISO image

git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/BackupPC/trunk@175 8392b6e1-25fa-0310-8288-cc32f8e212ea

bin/BackupPC_burnArchiveCLI

index 3f4009f..6b696fe 100755 (executable)
@@ -123,13 +123,63 @@ my @archives_to_burn = Menu(\%Menu_archive);
 
 print "\n";
 
+sub skip($) {
+       my $msg = shift;
+       print "WARNING: $msg, skipping...\n";
+       goto SKIP;
+}
+
+my $sth_archive_backup = $dbh->prepare( qq{
+       select
+               backup_id,
+               hosts.name as host,
+               shares.name as share,
+               backups.num as num
+       from archive_backup
+       join archive on archive_id = archive.id
+       join backups on backup_id = backups.id
+       join hosts on hostid = hosts.id
+       join shares on shareid = shares.id
+       where archive.dvd_nr = ?
+});
+
 foreach my $arc (@archives_to_burn) {
        exit if ($arc eq ']quit[');
 
        my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/);
        die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr);
 
-       print "Working on DVD #$dvd_nr\n";
+       my $tmp_dir = "/$iso_dir/$dvd_nr";
+
+       my $t = time();
+
+       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);
+
+       $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 $mkisofs, "| $cmd 2>&1") || skip "can't run $cmd: $!";
+
+       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";
+       }
+
+       while(! -e $iso_file) {
+               sleep 1;
+       }
+
+       print "Created $iso_file in ", fmt_time(time() - $t), "\n";
+
+SKIP:
 
 }