From 82e293464270475fab3cf0e34cb9562862842dcf Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Tue, 22 Jan 2013 23:29:42 +0000 Subject: added detection of broken and missing downloads --- cron/read_filesize_from_filesystem.pl | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/cron/read_filesize_from_filesystem.pl b/cron/read_filesize_from_filesystem.pl index 702ddb4..a4bc86c 100755 --- a/cron/read_filesize_from_filesystem.pl +++ b/cron/read_filesize_from_filesystem.pl @@ -3,14 +3,36 @@ use strict; use Cwd 'abs_path'; use File::Basename; use local::db; +use File::Copy; use config; - +my %seen; for my $dl (local::db::download->retrieve_all) { - my $du = "du -sm ".$config::config{files_dir}.'/'.$dl->category->name.'/'.$dl->download_id; + my $dir = $config::config{files_dir}.'/'.$dl->category->name.'/'.$dl->download_id; + if (not -d $dir) + { + warn "Download dir is missing: $dir"; + } + my $du = "du -sm $dir"; + $seen{$dl->category->name}{$dl->download_id} = 1; my $du_resp = `$du`; my ($size) = $du_resp =~ /^(\d+)/; # warn $size; $dl->size($size); $dl->update; } + +for my $category (keys %seen) +{ + opendir(my $dh, $config::config{files_dir}.'/'.$category) || next; + while(readdir $dh) { + next if /^\.\.?$/; + if (not $seen{$category}{$_}) + { + #warn "invisible download ".$config::config{files_dir}."/$category/$_"; + mkdir($config::config{files_dir}."/broken/$category"); + move($config::config{files_dir}."/$category/$_",$config::config{files_dir}."/broken/$category/$_"); + } + } + closedir $dh; +} -- cgit v1.2.3