+
+ my $glob = "$Conf{ArchiveDest}/$host.$num.*";
+
+ my @tar_parts = sort map { s/^\Q$Conf{ArchiveDest}\E\/*//; $_ } glob $glob ;
+
+ if ( ! @tar_parts ) {
+ warn "ERROR: no files for $glob";
+ return;
+ }
+
+ print curr_time, " check $host $num\n";
+
+ my $sth = $dbh->prepare(qq{
+ SELECT count(*)
+ FROM files
+ JOIN shares on shares.id = shareid
+ JOIN hosts on hosts.id = shares.hostid
+ WHERE hosts.name = ? and backupnum = ?
+ });
+ $sth->execute($host, $num);
+ my ($files) = $sth->fetchrow_array;
+
+ if ( $files == 0 ) {
+ warn "EMPTY INCREMENT, cleanup ",dump( @tar_parts );
+ foreach my $path ( @tar_parts ) {
+ my $full = "$Conf{ArchiveDest}/$path";
+ warn "rm $full\n";
+ unlink $full || die "can't remove $full: $!";
+ }
+ return;
+ }
+
+ my $md5_path = "$Conf{ArchiveDest}/$host.$num.md5";
+ unlink $md5_path if -e $md5_path && -s $md5_path == 0; # fix empty
+
+ my $read_protect = 0;
+
+ if ( ! -e $md5_path ) {
+ system_ok "cd $Conf{ArchiveDest} && /usr/bin/md5sum $host.$num.* > $md5_path";
+ read_only $md5_path;
+ $read_protect = 1;
+ } else {
+ system_ok "cd $Conf{ArchiveDest} && /usr/bin/md5sum -c $md5_path" if $opt->check;
+ }
+
+ my $md5sum;
+ foreach ( split(/\n/, read_file "$Conf{ArchiveDest}/$host.$num.md5" ) ) {
+ my ( $md5, $path ) = split(/\s+/,$_);
+ $md5sum->{$path} = $md5;
+ read_only "$Conf{ArchiveDest}/$path" if $read_protect;
+ }