From 57307aaa251ad94e09d3bf3bf6663d58aa9d7ae7 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Fri, 28 Jan 2011 16:55:37 +0100 Subject: [PATCH] save selected backup_parts for burning --- bin/BackupPC_ASA_SearchUpdate | 3 +- lib/BackupPC/CGI/BurnMedia.pm | 77 +++++++++++------------------------ 2 files changed, 24 insertions(+), 56 deletions(-) diff --git a/bin/BackupPC_ASA_SearchUpdate b/bin/BackupPC_ASA_SearchUpdate index b921594..d3f9754 100755 --- a/bin/BackupPC_ASA_SearchUpdate +++ b/bin/BackupPC_ASA_SearchUpdate @@ -296,9 +296,8 @@ if ($opt->create) { create table archive_parts ( archive_id int not null references archive(id) on delete cascade, - backup_id int not null references backups(id), backup_part_id int not null references backup_parts(id), - primary key(archive_id, backup_id, backup_part_id) + primary key(archive_id, backup_part_id) ); create table archive_burned ( diff --git a/lib/BackupPC/CGI/BurnMedia.pm b/lib/BackupPC/CGI/BurnMedia.pm index 7fce5df..1a3a53a 100644 --- a/lib/BackupPC/CGI/BurnMedia.pm +++ b/lib/BackupPC/CGI/BurnMedia.pm @@ -18,7 +18,7 @@ sub action() { my $dbh = DBI->connect($Conf{SearchDSN}, $Conf{SearchUser}, "", { RaiseError => 1, AutoCommit => 0 } ); BackupPC::CGI::Lib::NewRequest(); -# $cont = Dumper(%In); + $cont = Dumper(\%In); if (!defined($In{submitBurner})) { $title = eval(q{ ${h1($Lang->{Burn_media})}}); $cont = Dumper(%In); @@ -35,38 +35,21 @@ EOF } else { - my @selected_backup_ids; + my @selected_backup_parts; - my $total_size = 0; - my $selected = 0; - - my $parts = 1; foreach my $key(keys(%In)) { - if ($key =~ m/^fcb([0-9]+)_([0-9]+)_([0-9]+)$/gi) { - - my ($host_id, $backup_num, $backup_id) = ($1,$2,$3); - push @selected_backup_ids, $backup_id; - my $currSize = BackupPC::Search::getGzipSizeFromBackupID($backup_id); - my $sth_size = $dbh->prepare(q{select inc_size from backups where id = ?}); - $sth_size -> execute( $backup_id ); - my $db_size = $sth_size->fetchrow_hashref()->{inc_size}; - - if ($db_size != $currSize) { - $cont .= "NOT EQUAL!: [fs_size:$currSize, db_size:$db_size, backup_id:$backup_id]
"; - } - - if ($currSize > 0) { - $total_size += $currSize; - } - $selected++; - - my ($this_part) = $dbh->selectrow_array("select parts from backups where id = ?", undef, $backup_id); - $this_part--; - $parts += $this_part; - } + next unless $key =~ m/^fcb(\d+)/; + push @selected_backup_parts, $1; } - if ($total_size > ($Conf{ArchiveMediaSize} * $parts)) { + + my ($total_size) = $dbh->selectrow_array( q{ + SELECT sum(size) FROM backup_parts + WHERE id IN ( }.join(',', @selected_backup_parts).q{ ) + }); + + + if ($total_size > ($Conf{ArchiveMediaSize})) { $cont .= eval(' ${h2(Error)} '); $cont .= join(' ' , "Selected backups size", unit($total_size) @@ -98,40 +81,26 @@ EOF $sth->execute($In{'note'}, $User, $total_size); - foreach my $backup_id (@selected_backup_ids) { - - # link backups with archive - my $sth = $dbh->prepare(q{ - INSERT INTO archive_backup ( - archive_id, backup_id - ) VALUES ( - (SELECT last_value FROM archive_id_seq), ? - ) - }); - - $sth->execute($backup_id); - - $dbh->commit(); - - } + my $sth = $dbh->prepare(q{ + INSERT INTO archive_parts ( + archive_id, backup_part_id + ) VALUES ( + (SELECT last_value FROM archive_id_seq), ? + ) + }); + $sth->execute($_) foreach @selected_backup_parts; my ($dvd_nr) = $dbh->selectrow_array(qq{ select last_value from dvd_nr }); - $dvd_nr ||= 'error'; + die "no dvd_nr" unless $dvd_nr; $dbh->commit(); - my $db_size = 0; - $sth = $dbh->prepare('SELECT SUM(gzip_size) AS suma FROM backups_on_dvds WHERE dvd_nr=?'); - $sth->execute($dvd_nr); - $db_size = $sth->fetchrow_hashref()->{suma}; - $sth->finish(); - $cont .= q{ - Archived following backups: - } . join(", ", @selected_backup_ids) . q{ + Archived following backups parts: + } . join(", ", @selected_backup_parts) . q{
with total size of } . unit($total_size) . q{ -- 2.20.1