- print(STDERR $dir);
- # erase first dot
- if (substr($dir, 0, 1) == '.')
- {
- $dir = substr($dir, 1, length($dir));
- }
- # erase first slash
- if (substr($dir, 0, 1) == '/')
- {
- $dir = substr($dir, 1, length($dir));
- }
- # erase last slash
- if (substr($dir, length($dir)-1, 1) == '/')
- {
- $dir = substr($dir, 0, length($dir)-1);
- }
-
- if (! $db_done)
- {
- print STDERR "doing db...";
- my $search_sql = q{
- SELECT hosts.name, shares.name, startfiles.name, COUNT(files.*) AS subfiles
- FROM files startfiles
- INNER JOIN shares ON (shares.id=startfiles.shareid)
- INNER JOIN hosts ON (hosts.id=shares.hostid)
- INNER JOIN backups ON (
- backups.num=startfiles.backupnum AND
- backups.hostid=hosts.id AND backups.shareid=shares.id
- )
- LEFT JOIN files ON (
- files.backupnum=startfiles.backupnum AND
- files.shareid=startfiles.shareid AND
- files.path LIKE startfiles.path || '/%' AND
- files.type<>startfiles.type AND
- files.id <> startfiles.id
- )
- WHERE
- hosts.name=? AND
- shares.name=? AND
- startfiles.type=? AND
- startfiles.backupnum=?
- GROUP BY hosts.name, shares.name, startfiles.name, startfiles.backupnum;
- };
- my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 1} );
- my $sth = $dbh->prepare($search_sql);
- $sth->execute($host, $share, BPC_FTYPE_DIR, $dumpNo);
- print STDERR "done\n";
- while (my @r_data = $sth->fetchrow_array())
- {
- $DBCache[$r_data[0]][$r_data[1]][$r_data[2]] = 1;
- }
-
- $sth->finish();
-
- $DBCache[$host][$share][$dir] = $ret;
- $dbh->disconnect();
- $db_done = 1;
+ print STDERR curr_time(), "getting files for $host:$share increment $dumpNo...";
+ my $sql = q{
+ SELECT path
+ FROM files
+ JOIN shares on shares.id = shareid
+ JOIN hosts on hosts.id = shares.hostid
+ WHERE hosts.name = ? and shares.name = ? and backupnum = ?
+ };
+
+ my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 1} );
+ my $sth = $dbh->prepare($sql);
+ $sth->execute($host, $share, $dumpNo);
+ my $count = $sth->rows;
+ print STDERR " found $count items\n";
+ while (my $row = $sth->fetchrow_arrayref) {
+print STDERR "+ ", $row->[0],"\n";
+ $in_backup_increment->{ $row->[0] }++;