X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=bin%2FBackupPC_checkArchiveConsistency;fp=bin%2FBackupPC_checkArchiveConsistency;h=05f91bac3a9b4d0ec8e1d51d3e5d2daf836ac593;hp=0000000000000000000000000000000000000000;hb=d0125da84087705cd795b0472acdc342891a0ab2;hpb=e1a8e41c3459be206ab745598be5dbab42ed91f5 diff --git a/bin/BackupPC_checkArchiveConsistency b/bin/BackupPC_checkArchiveConsistency new file mode 100755 index 0000000..05f91ba --- /dev/null +++ b/bin/BackupPC_checkArchiveConsistency @@ -0,0 +1,52 @@ +#!/usr/bin/perl -w +use strict; +no utf8; + +use lib "__INSTALLDIR__/lib"; +use DBI; + + +my $bpc = BackupPC::Lib->new || die "can't create BackupPC::Lib"; +my %Conf = $bpc->Conf(); + +my $dsn = $Conf{searchdsn} || die "need searchdsn in config.pl\n"; +my $user = $Conf{searchuser} || ''; +my $dbh = dbi->connect($dsn, $user, "", { raiseerror => 1, autocommit => 0 }); +my $tar_dir = $Conf{InstallDir}.'/'.$Conf{GzipTempDir}; + + +my $dvd_nr = $ARGV[0]; + +if (!defined($dvd_nr)) { + print q{ + No dvd_nr parameter! + Usage: + $0 + }; + exit(0); +} + +my $sql = q{ + SELECT * + FROM backups_on_dvds + WHERE dvd_nr = ? +}; +my $sth = $dbh->prepare($sql); +$sth->execute($dvd_nr); +while (my $row = $sth->fetchrow_hashref()) { + my $host_share = $row->{share}; + $host_share =~ s/(.*)+:(.*)/$1_$2_/gi; + my $filename = $tar_dir."/".$host_share . $row->{num}; + my (undef, undef, undef, undef, undef, undef, undef, $fs_size, undef, undef, undef, undef, undef) = stat($filename); + print "checking $filename..."; + if ($fs_size != $row->{gzip_size}) { + print "INVALID: fs_size: $fs_size, db_size: ".$row->{gzip_size}."\n"; + } else { + print "ok\n"; + } + +} +$sth->finish(); +$dbh->disconnect(); + +