#!/usr/bin/perl 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 $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; }