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);
-
- # 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 @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}++;
- my $key = join(" ", (
- $shareID,
- $dir,
- $path_key,
- $filesInBackup->{$path_key}->{'mtime'},
- $filesInBackup->{$path_key}->{'size'}
- ));
+ if ($filesInBackup->{$path_key}->{'type'} == BPC_FTYPE_DIR) {
+ $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;
- 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++;
+ $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);