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 (
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{
fmt_time($backup->{endTime} - $backup->{startTime}),
")\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();
-
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();
}
}