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);
foreach my $share ($files->shareList($backupNum)) {
print " $nf/$f files $nd/$d dirs\n";
$dbh->commit();
}
+
+ $sth->{insert_backups}->execute(
+ $hostID,
+ $backupNum,
+ $backup->{'endTime'},
+ $backup->{'type'}
+ );
+ $dbh->commit();
+
}
}
undef $sth;
my ($bpc, $hostname, $backups, $backupNum, $share, $dir, $shareID) = @_;
- my ($nr_files, $new_files, $nr_dirs, $new_dirs) = (0,0,0,0);
+#print STDERR "recurse($hostname,$backupNum,$share,$dir,$shareID)\n";
- my @stack;
+ my ($nr_files, $new_files, $nr_dirs, $new_dirs) = (0,0,0,0);
{ # scope
+ my @stack;
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 = (
if (! $beenThere->{$key} && ! found_in_db(@data)) {
+##print STDERR "# key: $key [", $beenThere->{$key},"]";
$sth->{'insert_files'}->execute(@data);
- print STDERR "$key\n";
if ($filesInBackup->{$path_key}->{'type'} == BPC_FTYPE_DIR) {
$new_dirs++;
+##print STDERR " dir\n";
} else {
$new_files++;
+##print STDERR " file\n";
}
}
$beenThere->{$key}++;
if ($filesInBackup->{$path_key}->{'type'} == BPC_FTYPE_DIR) {
$nr_dirs++;
- push @stack, [ $bpc, $hostname, $backups, $backupNum, $share, $path_key, $shareID ] unless ($beenThere->{$key});
+ my $full_path = $dir . '/' . $path_key;
+ push @stack, $full_path;
+##print STDERR "### store to stack: $full_path\n";
+
# my ($f,$nf,$d,$nd) = recurseDir($bpc, $hostname, $backups, $backupNum, $share, $path_key, $shareID) unless ($beenThere->{$key});
#
# $nr_files += $f;
}
}
- }
+##print STDERR "# STACK ",join(", ", @stack),"\n";
- foreach my $r (@stack) {
- my ($f,$nf,$d,$nd) = recurseDir(@{$r});
- $nr_files += $f;
- $new_files += $nf;
- $nr_dirs += $d;
- $new_dirs += $nd;
+ while ( my $dir = shift @stack ) {
+ my ($f,$nf,$d,$nd) = recurseDir($bpc, $hostname, $backups, $backupNum, $share, $dir, $shareID);
+# print STDERR "## $dir f: $f nf: $nf d: $d nd: $nd\n";
+ $nr_files += $f;
+ $new_files += $nf;
+ $nr_dirs += $d;
+ $new_dirs += $nd;
+ }
}
return ($nr_files, $new_files, $nr_dirs, $new_dirs);