--- trunk/bin/BackupPC_updatedb 2005/07/29 17:30:25 26 +++ trunk/bin/BackupPC_updatedb 2005/07/29 17:31:14 27 @@ -273,56 +273,73 @@ my ($nr_files, $new_files, $nr_dirs, $new_dirs) = (0,0,0,0); - my $files = BackupPC::View->new($bpc, $hostname, $backups); - my $filesInBackup = $files->dirAttrib($backupNum, $share, $dir); + my @stack; + + { # scope + + my $files = BackupPC::View->new($bpc, $hostname, $backups); + my $filesInBackup = $files->dirAttrib($backupNum, $share, $dir); + +print STDERR "$hostname: $share | $dir | $backupNum\n"; + + # first, add all the entries in current directory + foreach my $path_key (keys %{$filesInBackup}) { + my @data = ( + $shareID, + $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'} + ); + + my $key = join(" ", ( + $shareID, + $dir, + $path_key, + $filesInBackup->{$path_key}->{'mtime'}, + $filesInBackup->{$path_key}->{'size'} + )); + + + if (! $beenThere->{$key} && ! found_in_db(@data)) { + $sth->{'insert_files'}->execute(@data); + print STDERR "$key\n"; + if ($filesInBackup->{$path_key}->{'type'} == BPC_FTYPE_DIR) { + $new_dirs++; + } else { + $new_files++; + } + } + $beenThere->{$key}++; - # first, add all the entries in current directory - foreach my $path_key (keys %{$filesInBackup}) { - my @data = ( - $shareID, - $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'} - ); - - my $key = join(" ", ( - $shareID, - $dir, - $path_key, - $filesInBackup->{$path_key}->{'mtime'}, - $filesInBackup->{$path_key}->{'size'} - )); - - - if (! $beenThere->{$key} && ! found_in_db(@data)) { - $sth->{'insert_files'}->execute(@data); -# print STDERR "$key\n"; if ($filesInBackup->{$path_key}->{'type'} == BPC_FTYPE_DIR) { - $new_dirs++; + $nr_dirs++; + + push @stack, [ $bpc, $hostname, $backups, $backupNum, $share, $path_key, $shareID ] unless ($beenThere->{$key}); +# my ($f,$nf,$d,$nd) = recurseDir($bpc, $hostname, $backups, $backupNum, $share, $path_key, $shareID) unless ($beenThere->{$key}); +# +# $nr_files += $f; +# $new_files += $nf; +# $nr_dirs += $d; +# $new_dirs += $nd; + } else { - $new_files++; + $nr_files++; } } - $beenThere->{$key}++; - - if ($filesInBackup->{$path_key}->{'type'} == BPC_FTYPE_DIR) { - $nr_dirs++; - - my ($f,$nf,$d,$nd) = recurseDir($bpc, $hostname, $backups, $backupNum, $share, $path_key, $shareID); - $nr_files += $f; - $new_files += $nf; - $nr_dirs += $d; - $new_dirs += $nd; + } - } else { - $nr_files++; - } + foreach my $r (@stack) { + my ($f,$nf,$d,$nd) = recurseDir(@{$r}); + $nr_files += $f; + $new_files += $nf; + $nr_dirs += $d; + $new_dirs += $nd; } return ($nr_files, $new_files, $nr_dirs, $new_dirs);