--- trunk/bin/BackupPC_updatedb 2005/08/21 15:59:55 62 +++ trunk/bin/BackupPC_updatedb 2005/08/21 23:25:47 65 @@ -95,11 +95,12 @@ num INTEGER NOT NULL, date integer NOT NULL, type CHAR(4) not null, - PRIMARY KEY(hostID, num) + shareID integer not null references shares(id), + PRIMARY KEY(hostID, num, shareID) ); }); - do_index('backups_hostid,num_unique'); + #do_index('backups_hostid,num_unique'); $dbh->do(qq{ create table dvds ( @@ -180,15 +181,15 @@ SELECT ID FROM hosts WHERE name=? }); -$sth->{backups_broj} = $dbh->prepare(qq{ +$sth->{backups_count} = $dbh->prepare(qq{ SELECT COUNT(*) FROM backups -WHERE hostID=? AND num=? +WHERE hostID=? AND num=? AND shareid=? }); $sth->{insert_backups} = $dbh->prepare(qq{ -INSERT INTO backups (hostID, num, date, type) -VALUES (?,?,?,?) +INSERT INTO backups (hostID, num, date, type, shareid) +VALUES (?,?,?,?,?) }); $sth->{insert_files} = $dbh->prepare(qq{ @@ -246,34 +247,40 @@ fmt_time($backup->{endTime} - $backup->{startTime}), ")\n"; - $sth->{backups_broj}->execute($hostID, $backupNum); - my ($broj) = $sth->{backups_broj}->fetchrow_array(); - next if ($broj > 0); - - $sth->{insert_backups}->execute( - $hostID, - $backupNum, - $backup->{'endTime'}, - $backup->{'type'} - ); - $dbh->commit(); - my $files = BackupPC::View->new($bpc, $hostname, \@backups, 1); foreach my $share ($files->shareList($backupNum)) { my $t = time(); - print strftime($t_fmt,localtime())," ", $share; $shareID = getShareID($share, $hostID, $hostname); + $sth->{backups_count}->execute($hostID, $backupNum, $shareID); + my ($count) = $sth->{backups_count}->fetchrow_array(); + # skip if allready in database! + next if ($count > 0); + + # dump some log + print strftime($t_fmt,localtime())," ", $share; + my ($f, $nf, $d, $nd) = recurseDir($bpc, $hostname, $files, $backupNum, $share, "", $shareID); + + $sth->{insert_backups}->execute( + $hostID, + $backupNum, + $backup->{'endTime'}, + $backup->{'type'}, + $shareID + ); + + print " commit"; + $dbh->commit(); + my $dur = (time() - $t) || 1; printf(" %d/%d files %d/%d dirs [%.2f/s dur: %s]\n", $nf, $f, $nd, $d, ( ($f+$d) / $dur ), fmt_time($dur) ); - $dbh->commit(); } }