#!/vol/local/perl #$MDOCS/census/tar2seedis/tar2seedis.pl 2/26/96 # perl script to copy one MSS tar archive to seedis.census.gov # upon completion the input queue is updated # input queue = $MDOCS/census/tar2seedis/queue.dat # field: 0=status 1=tape 2=tapename 3=msstape 4=owner 5=bytes 6-8=date # 9=format 10=lstfile 11=duplicate tape no 12=target disk 13... comments # 12/17/96 transfer logfile (gssa.log or bcka.log) # $1 = $ARGV[0] = tape number to process (nnnnn with leading zeros) $selected = $ARGV[0]; print $selected . "\n"; # open tarinfo.txt for input open (QUEUE,"tarinfo.txt"); while () { $line = $_; @tarinfo = split(" ",$line); # status $status = $tarinfo[0]; $tapeno = $tarinfo[1]; $owner = $tarinfo[4]; # $format = 'all' or 'gss' $format = $tarinfo[9]; if ( $format eq 'gss') { #$censusdisk = 'dka400' ; #$censusdisk = 'dka600' ; #$censusdisk = 'dka200' ; #$censusdisk = 'dka300' ; $censusdisk = 'dka600' ; } elsif ( $format eq 'all') { #$censusdisk = 'dka500' ; #$censusdisk = 'dka700' ; $censusdisk = 'dka600' ; } if ($owner eq 'al') { $owner = 'alsu' ; } if ($owner eq 'as') { $owner = 'asztalos' ; } elsif ($owner eq 'pe') { $owner = 'petrush' ; } elsif ($owner eq 'br') { $owner = 'bradtapes' ; } # size of tarfile in bytes; x if missing $size = $tarinfo[5]; #tar file (gss.tar or all.tar; xxx.tar if missing $tarfile = $tarinfo[9] . '.tar' ; if ( $size eq 'x' ) { $tarfile = 'xxx.tar'; } #archived file list (gss or bck; xxx.xxx if missing) if ($tarinfo[10] eq 'gss' ) { $lstfile = 'gss.red' ; } elsif ($tarinfo[10] eq 'bck' ) { $lstfile = 'bck.lst' ; } else { $lstfile = 'xxx.xxx' ; } #log file (gssa.log or bcka.log) $logfile = $tarinfo[10] . 'a.log'; # MSS directory $mssdir = '/home/mss/icsd/seedis/' . $owner . '/gss/' . $tapeno ; if ($selected == $tapeno) { $status = 1; $tarinfo[0] = $status; $line = join(" ", @tarinfo, "\n"); print $line; # ftp script to transfer main files # open temp1.nnnnn.ftp for input open (FTP1,'>temp1.' . $tapeno . '.ftp' ); # cd to seedis.census.gov::$censusdisk:[seedis.mss] print FTP1 'cd ' . $censusdisk . ':[seedis.mss]' . "\n"; # mkdir subdirectory with tape number print FTP1 'mkdir ' . $tapeno . "\n"; # cd subdirectory print FTP1 'cd ' . $tapeno . "\n"; # dir files print FTP1 'dir ' . "\n"; # only if $logfile eq 'gssa.log' or 'bcka.log' if ($logfile eq 'gssa.log' || $logfile eq 'bcka.log') { # transfer logfile in ascii mode print FTP1 'put ' . $mssdir . '/' . $logfile . ' ' . $logfile . "\n"; } # only if $lstfile eq 'gss.red' or 'bck.lst' if ($lstfile eq 'gss.red' || $lstfile eq 'bck.lst') { # transfer lstfile in ascii mode print FTP1 'put ' . $mssdir . '/' . $lstfile . ' ' . $lstfile . "\n"; } # only if $tarfile eq 'gss.tar' or 'all.tar' if ($tarfile eq 'gss.tar' || $tarfile eq 'all.tar') { # switch to binary mode print FTP1 'binary' . "\n"; # transfer tarfile in binary mode print FTP1 'put ' . $mssdir . '/' . $tarfile . ' ' . $tarfile . "\n"; } # dir files print FTP1 'dir ' . "\n"; # quit ftp print FTP1 'quit ' . "\n"; # line of dashes print FTP1 '#' . '-' x 78 . "\n"; # close temp1.nnnnn.ftp close FTP1 ; # ftp script to transfer completed log file # open temp2.nnnnn.ftp for input open (FTP2,'>temp2.' . $tapeno . '.ftp' ); # cd to seedis.census.gov::$censusdisk:[seedis.mss] print FTP2 'cd ' . $censusdisk . ':[seedis.mss]' . "\n"; # mkdir subdirectory with tape number print FTP2 'mkdir ' . $tapeno . "\n"; # cd subdirectory print FTP2 'cd ' . $tapeno . "\n"; # dir files print FTP2 'dir ' . "\n"; # transfer log file print FTP2 'put ftp_' . $tapeno . '.log' . "\n"; # dir files print FTP2 'dir ' . "\n"; # quit ftp print FTP2 'quit ' . "\n"; # line of dashes print FTP2 '#' . '-' x 78 . "\n"; # close temp2.nnnnn.ftp close FTP2 ; # open temp.nnnnn.csh for input open (CSH,'>temp.' . $tapeno . '.csh' ); # csh header line print CSH '#!/bin/csh -fx' . "\n"; # begin file print CSH '#begin temp.' . $tapeno . '.csh' . "\n"; # line from input queue print CSH '#' . $line; # ls -al MSS directory print CSH 'ls -al ' . $mssdir . "\n"; # only if $logfile eq 'gssa.log' or 'bcka.log' if ($logfile eq 'gssa.log' || $logfile eq 'bcka.log') { # mssls logfile print CSH 'mssls ' . $mssdir . '/' . $logfile . "\n"; # stage logfile print CSH 'stage ' . $mssdir . '/' . $logfile . "\n"; } # only if $lstfile eq 'gss.red' or 'bck.lst' if ($lstfile eq 'gss.red' || $lstfile eq 'bck.lst') { # mssls lstfile print CSH 'mssls ' . $mssdir . '/' . $lstfile . "\n"; # stage lstfile print CSH 'stage ' . $mssdir . '/' . $lstfile . "\n"; } # only if $tarfile eq 'gss.tar' or 'all.tar' if ($tarfile eq 'gss.tar' || $tarfile eq 'all.tar') { # mssls tarfile print CSH 'mssls ' . $mssdir . '/' . $tarfile . "\n"; # stage tarfile print CSH 'stage ' . $mssdir . '/' . $tarfile . "\n"; } # run main ftp job print CSH 'ftp -v seedis.census.gov