/[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 335 by dpavlin, Wed Mar 1 12:11:23 2006 UTC revision 337 by dpavlin, Wed Mar 1 13:04:03 2006 UTC
# Line 332  my $sth_archive_burned = $dbh->prepare( Line 332  my $sth_archive_burned = $dbh->prepare(
332          values ( (select id from archive where dvd_nr =?), ?, ?, ?)          values ( (select id from archive where dvd_nr =?), ?, ?, ?)
333  });  });
334    
335  foreach my $arc (@archives_to_burn) {  my $copies = $Conf{BurnMultipleCopies} || 1;
         exit if ($arc eq ']quit[');  
336    
337          my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/);  foreach my $copy_nr ( 1 .. $copies ) {
         die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr);  
338    
339          my $tmp_dir = "/$iso_dir/$dvd_nr";          foreach my $arc (@archives_to_burn) {
340                    exit if ($arc eq ']quit[');
341    
342          my $t = time();                  my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/);
343                    die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr);
344    
345          print "Working on DVD #$dvd_nr in $tmp_dir\n";                  my $tmp_dir = "/$iso_dir/$dvd_nr";
346    
347          $sth_archive_backup_parts->execute($dvd_nr);                  my $t = time();
348    
349          $sth_archive_backup_check->execute($dvd_nr);                  print "Working on DVD #$dvd_nr in $tmp_dir\n";
350    
351          my ($parts_nr, $check_nr) = ($sth_archive_backup_parts->rows, $sth_archive_backup_check->fetchrow_array);                  $sth_archive_backup_parts->execute($dvd_nr);
352    
353          if ($parts_nr != $check_nr) {                  $sth_archive_backup_check->execute($dvd_nr);
                 warn "ERROR: DVD #$dvd_nr is still not inconsistent state. Some backup parts are ",  
                         ($parts_nr < $check_nr) ? "missing ($parts_nr < $check_nr)" : "extra ($parts_nr > $check_nr)",  
                         " you should re-create this DVD after BackupPC_incPartsUpdate finish\n";  
                 delete_dvd( $dvd_nr );  
                 next;  
         }  
   
         if ($sth_archive_backup_parts->rows == 0) {  
                 warn "ERROR: no backup parts found for $dvd_nr. You should re-create that DVD.\n";  
                 next if delete_dvd( $dvd_nr );  
         }  
354    
355          if ($prompt_for_delete) {                  my ($parts_nr, $check_nr) = ($sth_archive_backup_parts->rows, $sth_archive_backup_check->fetchrow_array);
                 next if delete_dvd( $dvd_nr );  
         }  
356    
357          my @volumes;                  if ($parts_nr != $check_nr) {
358          my $v;  # emtpy volume                          warn "ERROR: DVD #$dvd_nr is still not inconsistent state. Some backup parts are ",
359          my $v_size = 0;                                  ($parts_nr < $check_nr) ? "missing ($parts_nr < $check_nr)" : "extra ($parts_nr > $check_nr)",
360                                    " you should re-create this DVD after BackupPC_incPartsUpdate finish\n";
361          my $max_archive_size = $Conf{MaxArchiveSize} || die "no MaxArchiveSize";                          delete_dvd( $dvd_nr );
362          while (my $row = $sth_archive_backup_parts->fetchrow_hashref) {                          next;
                 if (($v->{size} || 0) + $row->{part_size} > $max_archive_size) {  
                         push @volumes, $v;  
                         $v = {};  
363                  }                  }
364                  $v->{size} += $row->{part_size};  
365                  # this part                  if ($sth_archive_backup_parts->rows == 0) {
366                  my $p = {                          warn "ERROR: no backup parts found for $dvd_nr. You should re-create that DVD.\n";
367                          filename => BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}),                          next if delete_dvd( $dvd_nr );
                 };  
                 foreach my $fld (qw/part_nr md5/) {  
                         $p->{$fld} = $row->{$fld} || die "missing $fld in row!";  
368                  }                  }
                 push @{ $v->{parts} }, $p;  
         }  
         push @volumes, $v if ($v);  
369    
370          #warn "# volumes: ",Dumper(\@volumes),"\n";                  if ($prompt_for_delete) {
371                            next if delete_dvd( $dvd_nr );
372                    }
373    
374          my $volumes = $#volumes + 1;                  my @volumes;
375          my $volume_nr = 1;                  my $v;  # emtpy volume
376                    my $v_size = 0;
377    
378                    my $max_archive_size = $Conf{MaxArchiveSize} || die "no MaxArchiveSize";
379                    while (my $row = $sth_archive_backup_parts->fetchrow_hashref) {
380                            if (($v->{size} || 0) + $row->{part_size} > $max_archive_size) {
381                                    push @volumes, $v;
382                                    $v = {};
383                            }
384                            $v->{size} += $row->{part_size};
385                            # this part
386                            my $p = {
387                                    filename => BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}),
388                            };
389                            foreach my $fld (qw/part_nr md5/) {
390                                    $p->{$fld} = $row->{$fld} || die "missing $fld in row!";
391                            }
392                            push @{ $v->{parts} }, $p;
393                    }
394                    push @volumes, $v if ($v);
395    
396          my $copies = $Conf{BurnMultipleCopies} || 1;                  #warn "# volumes: ",Dumper(\@volumes),"\n";
397    
398          foreach my $copy_nr ( 1 .. $copies ) {                  my $volumes = $#volumes + 1;
399                    my $volume_nr = 1;
400    
401                  foreach my $v (@volumes) {                  foreach my $v (@volumes) {
402    
# Line 490  foreach my $arc (@archives_to_burn) { Line 490  foreach my $arc (@archives_to_burn) {
490                                  rmtree($stage) || warn "can't remove stage directory $stage: $!";                                  rmtree($stage) || warn "can't remove stage directory $stage: $!";
491    
492                          } else {                          } else {
493                                  print "ISO $iso_file allready exists\n";                                  $iso_size = (stat($iso_file))[7];
494                                    print "ISO $iso_file allready exists [$iso_size bytes]\n";
495                          }                          }
496    
497                          print "\nREADY TO BURN MEDIA $disk_name copy $copy_nr\n\nPlease insert blank media and press ENTER\n\n";                          print "\nREADY TO BURN MEDIA $disk_name copy $copy_nr\n\nPlease insert blank media and press ENTER\n\n";
# Line 510  foreach my $arc (@archives_to_burn) { Line 511  foreach my $arc (@archives_to_burn) {
511                          $sth_archive_burned->execute($dvd_nr, $iso_size, $volume_nr, $copy_nr);                          $sth_archive_burned->execute($dvd_nr, $iso_size, $volume_nr, $copy_nr);
512    
513                          print "Media burn for $disk_name copy $copy_nr recorded\n";                          print "Media burn for $disk_name copy $copy_nr recorded\n";
514                    
515                            $volume_nr++;
516                  }                  }
517    
                 $volume_nr++;  
518          }          }
519    
520  SKIP:  SKIP:

Legend:
Removed from v.335  
changed lines
  Added in v.337

  ViewVC Help
Powered by ViewVC 1.1.26