4 migrate_images.pl - image migration script
8 migrates the images from a id-based directory structure to a 2 byte stemmed directory structure based on md5sums.
10 Requires the ImageAddMD5sum.pm db patch (available in cxgn/sgn/db).
18 database name (default sandbox)
22 host name (default localhost)
26 old image location directory (default /data/prod/public/images/image_files)
30 new image location directory (default /data/prod/public/images/new_image_files)
44 use CXGN
::DB
::InsertDBH
;
47 our($opt_o, $opt_n, $opt_H, $opt_D);
51 my $dbh = CXGN
::DB
::InsertDBH
->new( {
52 dbname
=> $opt_D || 'sandbox',
53 dbhost
=> $opt_H || 'localhost',
56 my $old_image_dir = $opt_o || '/data/prod/public/images/image_files';
57 my $new_image_dir = $opt_n || '/data/prod/public/images/new_image_files';
59 my $sql = "SELECT image_id FROM metadata.md_image where obsolete !='t' order by image_id";
60 my $sth = $dbh->prepare($sql);
67 while (my ($image_id) = $sth->fetchrow_array()) {
69 my $old_image = CXGN
::Image
->new(dbh
=>$dbh, image_id
=>$image_id, image_dir
=> $old_image_dir);
71 my $i = CXGN
::Image
->new(dbh
=>$dbh, image_id
=>$image_id, image_dir
=>$new_image_dir);
74 if (! -d
$old_image_dir."/".$image_id) {
75 push @not_found, "$image_id ".$i->get_name()."\n";
76 print STDERR
"\nNot found image: $image_id\n";
80 my $filepath = $old_image_dir."/".$image_id."/".$old_image->get_original_filename().$old_image->get_file_ext();
82 print STDERR
"WARNING! $filepath does not exist!\n";
85 my $md5sum = $i -> calculate_md5sum
($filepath);
90 $i->set_md5sum($md5sum);
96 $i->copy_location($old_image_dir."/".$image_id);
99 print STDERR
"Processing image $image_id \r";
102 foreach my $nf (@not_found) {
107 print STDERR
"\nProcessed $processed images, generating ".scalar(keys(%md5sums))." unique md5 keys.\n";