%config = ( # location where directories are put by end users 'local root dir' => '/home/dallas_active_projects/ready_to_archive', # location where directories are moved when job is completed 'local trash dir' => '/home/archiveDirectories/Trash', # location where directories are moved while being transferred 'local staging area' => '/home/archiveDirectories/Staging', # target server name/ip. Must be accessible via ssh with no password 'target server' => 'davinci', # location on target server where directories are placed while copying 'target staging area' => '/home/samba/archives/ready_to_archive', # location on target server where directories are finally put 'target final directory' => '/home/samba/archives/MC', # suffix of md5 of directories 'md5 suffix' => 'md5sum', # suffix of filename to create showing actions 'log suffix' => 'log', # suffix of error log 'error suffix' => 'err', # how long a directory must be undisturbed before it is ready to work on 'quiesent seconds' => 60*5, # five minutes # how long to leave stuff in the trash directory. 0 indicates never do it. 'trash cleanup' => 86400*7, # 7 days # anoymous subroutine to do any final processing on remote machine 'final procedure' => sub { my ( $remoteServer, $remoteStaging, $remoteTarget, $directory ) = @_; my $target = substr( $directory, 0, 2 ); $target = "$remoteTarget/MC_Patient_20$target/"; my ($message, $error ) = &runRemoteCommand( $remoteServer, "[ ! -d $target ] && mkdir -p $target" ); if ( $error == 0 ) { my $command = "mv '$remoteStaging/$directory' '$target'"; $command = "ssh $remoteServer " . '"' . $command . '"'; my $message = qx/$command/; &logit( $directory, $error == 0 ? $config{ 'log suffix' } : $config{ 'error suffix' }, $message ); } else { &logit( $directory, $config{ 'error suffix' }, $message ); } } # anonymous sub );