--- trunk/bin/BackupPC_updatedb 2005/08/20 16:45:02 52 +++ 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 ( @@ -117,7 +118,6 @@ backupNum INTEGER NOT NULL, name VARCHAR(255) NOT NULL, path VARCHAR(255) NOT NULL, - fullpath VARCHAR(255) NOT NULL, date integer NOT NULL, type INTEGER NOT NULL, size INTEGER NOT NULL, @@ -181,21 +181,21 @@ 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{ INSERT INTO files - (shareID, backupNum, name, path, fullpath, date, type, size) - VALUES (?,?,?,?,?,?,?,?) + (shareID, backupNum, name, path, date, type, size) + VALUES (?,?,?,?,?,?,?) }); sub fmt_time { @@ -241,36 +241,46 @@ print $hosts->{$host_key}->{'host'}, "\t#$backupNum\t", $backup->{type} || '?', " ", $backup->{nFilesNew} || '?', "/", $backup->{nFiles} || '?', - " files\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(); + " files (date: ", + strftime($t_fmt,localtime($backup->{startTime})), + " dur: ", + fmt_time($backup->{endTime} - $backup->{startTime}), + ")\n"; 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(); } } @@ -364,8 +374,6 @@ $backupNum, $path_key, $filesInBackup->{$path_key}->{'relPath'}, - $filesInBackup->{$path_key}->{'fullPath'}, - # $filesInBackup->{$path_key}->{'sharePathM'}, $filesInBackup->{$path_key}->{'mtime'}, $filesInBackup->{$path_key}->{'type'}, $filesInBackup->{$path_key}->{'size'}