/[BackupPC]/trunk/bin/BackupPC_burnArchiveCLI
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/bin/BackupPC_burnArchiveCLI

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 174 by dpavlin, Tue Oct 11 16:59:16 2005 UTC revision 181 by dpavlin, Wed Oct 12 10:34:26 2005 UTC
# Line 34  my $dbh = DBI->connect($dsn, $user, "", Line 34  my $dbh = DBI->connect($dsn, $user, "",
34  my $tar_dir = $Conf{InstallDir}.'/';  my $tar_dir = $Conf{InstallDir}.'/';
35  $tar_dir .= $Conf{GzipTempDir} || die "GzipTempDir isn't defined in configuration";  $tar_dir .= $Conf{GzipTempDir} || die "GzipTempDir isn't defined in configuration";
36    
37  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);
38    
39  my $iso_dir = $Conf{InstallDir}.'/';  my $iso_dir = $Conf{InstallDir}.'/';
40  $iso_dir .= $Conf{ISOTempDir} || die "ISOTempDir isn't defined in configuration";  $iso_dir .= $Conf{ISOTempDir} || die "ISOTempDir isn't defined in configuration";
# Line 123  my @archives_to_burn = Menu(\%Menu_archi Line 123  my @archives_to_burn = Menu(\%Menu_archi
123    
124  print "\n";  print "\n";
125    
126    sub skip($) {
127            my $msg = shift;
128            print "WARNING: $msg, skipping...\n";
129            goto SKIP;
130    }
131    
132    my $sth_archive_backup = $dbh->prepare( qq{
133            select
134                    backup_id,
135                    archive_id,
136                    hosts.name as host,
137                    shares.name as share,
138                    backups.num as num
139            from archive_backup
140            join archive on archive_id = archive.id
141            join backups on backup_id = backups.id
142            join hosts on hostid = hosts.id
143            join shares on shareid = shares.id
144            where archive.dvd_nr = ?
145    });
146    
147    my $sth_archive_burned = $dbh->prepare( qq{
148            insert into archive_burned
149                    (archive_id, iso_size)
150            values ( (select id from archive where dvd_nr =?), ?)
151    });
152    
153  foreach my $arc (@archives_to_burn) {  foreach my $arc (@archives_to_burn) {
154          exit if ($arc eq ']quit[');          exit if ($arc eq ']quit[');
155    
156          my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/);          my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/);
157          die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr);          die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr);
158    
159          print "Working on DVD #$dvd_nr\n";          my $tmp_dir = "/$iso_dir/$dvd_nr";
160    
161            my $t = time();
162    
163            print "Working on DVD #$dvd_nr in $tmp_dir\n";
164    
165            my $list_file = my $iso_file = "${iso_dir}/${dvd_nr}";
166            $list_file .= '.list';
167            $iso_file .= '.iso';
168    
169            if (-e $iso_file) {
170                    print "ISO $iso_file allready exists\n";
171                    goto BURN;
172            }
173    
174            $sth_archive_backup->execute($dvd_nr);
175    
176            open(my $list, "> $list_file") || skip "can't open $list_file: $!";
177    
178            my $inc = 0;
179    
180            while (my $row = $sth_archive_backup->fetchrow_hashref) {
181                    my $tar_file = BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'});
182                    skip "can't find increment $tar_file: $!" unless (-r "$tar_dir/$tar_file");
183                    print $list "$tar_dir/$tar_file\n";
184                    $inc++;
185    
186            }
187    
188            # FIXME add file list in xml and txt and note file
189    
190            close($list);
191    
192            print "Running mkisofs now for $inc increments...\n";
193    
194            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 };
195    
196            system($cmd) == 0 or skip "can't run $cmd: $?";
197    
198            my $size = (stat($iso_file))[7];
199    
200            print "Created $iso_file [$size bytes] in ", fmt_time(time() - $t), "\n";
201    
202    BURN:
203            # FIXME add call to cdrecord here!
204            $sth_archive_burned->execute($dvd_nr, $size);
205            print "Media burn for $dvd_nr recorded\n";
206    
207    SKIP:
208    
209  }  }
210    

Legend:
Removed from v.174  
changed lines
  Added in v.181

  ViewVC Help
Powered by ViewVC 1.1.26