#!/bin/sh
################################################################3
#
#  This script will tar up the directory specified by the first
#  argument ($1) and place the tar file on the HPSS server,
#  under ${HPSSOUT}.  The tar file is put in the directory
#  appropriate for data valid for the day specified as the second 
#  command line argument ($2).
#
#  An optional 3rd argument can be used to specify a file that
#  contains a list of egrep regular expressions that will be used
#  to exclude those file from being archived.
#
#  Usage: rhist_savecyc.sh Directory Date(YYYYMMDDHH format)
#
#  Where: Directory  = Directory to be tarred.
#         Date(YYYYMMDDHH format) = Day that the tar file should be saved under.
#
################################################################3
set -x


if [ $# -ne 2 ] && [ $# -ne 3 ]
then
  echo "Usage: rhist_savecyc.sh Directory Date(YYYYMMDDHH format) [ExcludeFile]"
  exit 1
fi 

#
#   Get directory to be tarred from the first command line argument,
#   and check to make sure that the directory exists.
#

dir=$1
if [ ! -d $dir ]
then
  echo "rhist_savecyc.sh:  Directory $dir does not exist."
  exit 2
fi 

#
#   cd to the directory to be tarred.
# 

cd $dir

#
#   Determine the directory where the tar file will be stored
#   and make sure that it exists on the S70.
#

year=`echo $2 | cut -c 1-4`
yearmo=`echo $2 | cut -c 1-6`
yrmoday=`echo $2 | cut -c 1-8`
rhcyc=`echo $2 | cut -c 9-10`
rhcycle=t${rhcyc}z
hpssdir=${HPSSOUT}/rh${year}/${yearmo}/$yrmoday
rhistdir=${TSMOUT}/rh${year}/${yearmo}/$yrmoday

if [ $TSM_FLAG = 'NO' ]
then
  hpssdir0=${HPSSOUT}/rh${year}/${yearmo}/$yrmoday
  hpssdir1=${HPSSOUT}/1year/rh${year}/${yearmo}/$yrmoday
  hpssdir2=${HPSSOUT}/2year/rh${year}/${yearmo}/$yrmoday
 
elif [ $TSM_FLAG = 'YES' ]
then
  rhistdir0=${TSMOUT}/rh${year}/${yearmo}/$yrmoday
  rhistdir1=${TSMOUT}/1year/rh${year}/${yearmo}/$yrmoday
  rhistdir2=${TSMOUT}/2year/rh${year}/${yearmo}/$yrmoday
 
 
  ssh ibmtsm1.ncep.noaa.gov "mkdir -p -m 755 $rhistdir0; mkdir -p -m 755 $rhistdir1; mkdir -p -m 755 $rhistdir2"
fi

#
#   Generate the name of the tarfile, which should be the same
#   as the absolute path name of the directory being
#   tarred, except that "/" are replaced with "_".
#

tarfile=`echo $PWD | cut -c 2- | tr "/" "_"`
tarfile=${tarfile}${rhcyc}.tar

#
#   Check if the tarfile index exists.  If it does, assume that
#   the data for the corresponding directory has already been
#   tarred and saved.
#

if [ $TSM_FLAG = 'NO' ]
then
   hsi "ls -l ${hpssdir}/${tarfile}.idx"
   tar_file_exists=$?
   if [ $tar_file_exists -eq 0 ]
   then
     echo "Directory $dir already saved."
     exit 0
   fi   
elif [ $TSM_FLAG = 'YES' ]
then
   size=`ssh ibmtsm1.ncep.noaa.gov ls -l ${rhistdir}/${tarfile} | awk '{ print \$5}'`
   if [  -n "$size" ]
   then
     if [ $size -gt 0 ]
     then
        echo "Directory $dir already saved."
        exit 0
     fi
   fi
fi

#
#  Determine files that should be archived 
#  

date
ls | grep ${rhcycle} | awk '{print "./"$0}'> $DATA/InputList
if [ $# -eq 3 ]
then
   egrep -v -f $3 $DATA/InputList > $DATA/InputList.new
   mv $DATA/InputList.new $DATA/InputList
fi

#   If on Stratus: 
#   htar is used to create the archive, -P creates
#   the directory path if it does not already exist,
#   and an index file is also made.
#

if [ $TSM_FLAG = 'NO' ]
then
  date
  htar -P -cvf ${hpssdir}/$tarfile -L ${DATA}/InputList
  err=$?
  if [ $err -ne 0 ]
  then
    echo "rhist_savecyc.sh:  File $tarfile was not successfully created."
    exit 3
  fi
  date
 
  #
  #   Read the tarfile and save a list of files that are in the tar file.
  #
 
  htar -tvf $hpssdir/$tarfile
  err=$?
  if [ $err -ne 0 ]
  then
    echo "rhist_savecyc.sh:  Tar file $tarfile was not successfully read to"
    echo "             generate a list of the files."
    exit 4
  fi
 
  #
  #  Restrict tar file, if it contains restricted data.
  #

    ${USHrhist}/rhist_restrict.sh ${hpssdir}/$tarfile
 
#
#  send to HSM
#

elif [ $TSM_FLAG = 'YES' ]
then
  gtar -cvf ${DATA}/$tarfile -T $DATA/InputList
  err=$?
  if [ $err -ne 0 ]
  then
    echo "rhist_savecyc.sh:  Directory $dir was not successfully tarred."
    exit 3
  fi

  $SCP $SCP_CONFIG ${DATA}/$tarfile ibmtsm1.ncep.noaa.gov:${rhistdir}/$tarfile

  rm $DATA/InputList
  date
fi

rm ${DATA}/${tarfile}
exit 0
