dotar



:
# -------------------------------------------------------------------
# dotar 
# Script to tar MSTI data to multi-tape DAT tape.
# To run script in background enter <sh dotar &>
# LRE 4/18/95
# -------------------------------------------------------------------
#
# Do some housekeeping first.
#
tartime=`date`
echo "Starting dotar at $tartime" > dotar.log
cp -p tar.log tar.log.bak 2>> dotar.log 
cp -p dotar.log dotar.log.bak 2>> dotar.log 
rm -f dotar.log 2>> dotar.log 
cp -p tar.restore tar.restore.bak 2>> dotar.log 
rm -f tar.restore 2>> dotar.log 
#
# initialize
#
tapenum=1
tarstat=1
#
# Start main loop
#
while [ $tarstat != 0 ]
do
  tar cvf /dev/rmt/0c /da/msti 1> tar.lst.tmp 2>> dotar.log
  tarstat=$?
    # status will be zero for last tape
  if [ $tarstat != 0 ]
  then
    # remove the incomplete tar file from the list
  set `wc -l tar.lst.tmp` 2>> dotar.log
  head -`expr $1 - 1` tar.lst.tmp 1> tar.lst 2>> dotar.log
    # get the transferred files out of the tar directory
  chmod 0666 tar.log
  cat tar.lst | while read line
  do
     # if directory then make a directory
    if [ -d "/$line" ]
      then
       echo "making directory /da/tar/$line" >> dotar.log
       mkdir /da/tar/$line 1>> dotar.log 2>> dotar.log
     # if file move out of tar path
    elif [ -f "/$line" ]
      then
        echo " moving /$line to /da/tar/$line" >> dotar.log
        mv -f "/$line" "/da/tar/$line" 1>> dotar.log 2>> dotar.log
     # if neither then notify 
    else 
      echo "$line not directory or file" >> dotar.log 2>> dotar.log
    fi
     # add to tar master list
    tartime=`date`
    echo "Tape Num $tapenum	$tartime	$line " >> tar.log
  done
    # make a copy to restore files back to regular place when done
  cat tar.lst >> tar.restore
    # go to next tape
  mt -f /dev/rmt/0c offline 1>> dotar.log 2>> dotar.log
  tapenum=`expr $tapenum + 1`
    # Wait for next tape mounted
  mtstat=1
  mttrys=0
  while [ $mtstat != 0 ]
    do
      sleep 10
      mt -f /dev/rmt/0c status 1>> dotar.log 2>> dotar.log
      mtstat=$?
      mttrys=`expr $mttrys + 1`
      if [ $mttrys = 12 ]
        then
          echo "Error mounting new tape $tapenum - exiting"
          echo "Error mounting new tape $tapenum - exiting" >> dotar.log 
          exit
      fi
  done
    # else status = 0
  else
    chmod 0666 tar.log
    cat tar.lst.tmp | while read line
    do
     # add to tar master list
      tartime=`date`
      echo "Tape Num $tapenum	$tartime	$line " >> tar.log
    done
    # end of if status != 0
  fi  
  # end of main loop
 chmod 0444 tar.log
 # debug
# tarstat=0
done 
 # Put the files back where they were
cat tar.restore | while read line
do
  if [ -f "/da/tar/$line" ]
      then
        echo "restoring /da/tar/$line to /$line" >> dotar.log
        mv -f "/da/tar/$line" "/$line" 1>> dotar.log 2>> dotar.log
  fi
done   
tartime=`date`
echo "Done with MSTI dotar $tartime" >> dotar.log