I wrote this little script to do exactly what you want. I have to admit that 
performance does not increase linearly with the number of streams. 

Anyway, this script will run N archives concurrently. It finds all the files in a 
subdirectory, and sorts them by size. It then makes N archive scripts and runs them 
all together.

Change $MC (management class), and $NUM_STREAMS (this can be number of tapes drive +1).

miles

#!/usr/bin/ksh
#
# Name: Fast Archive 2
#
# Purpose:
#
# Author: Miles Purdy
#
# Date:
#
# Required Parameters:
# -------------------------------------------------------------------------
#
# Optional Parameters:
# -------------------------------------------------------------------------
#
# Change History:
#
# Date          Name            Comments
# _________________________________________________________________________
#

# set umask to prevent others from reading tmp files
umask 077

DIRECTORY=$1

RETCODE=0
MC=1day
NUM_STREAMS=7

echo $0 started at $(date).

WORK_DIR=${WORK_DIR:=/tmp}
SCR_DIR=$UNIX_SYSTEM_DIRECTORY/bin

if [[ `hostname` != 'unxr' ]]
then
   echo "This scripts should be run from unxr."
   exit
fi

COUNT=1
/usr/bin/find $DIRECTORY -fstype jfs -type f -xdev -ls | sort -bnr +6.0 -7.0 \
     | sed "s/^.* \//\//" | while read LINE
do

   if [[ ! -s /tmp/file_list.$$.$COUNT ]]
   then
      echo "#!/usr/bin/ksh"      > /tmp/file_list.$$.$COUNT
      echo ""                   >> /tmp/file_list.$$.$COUNT
      chmod +x /tmp/file_list.$$.$COUNT

   fi

   echo "$DSM_DIR/dsmc archive -archmc=$MC $LINE" >>/tmp/file_list.$$.$COUNT

   let "COUNT = COUNT + 1"
   if [[ $COUNT -eq $NUM_STREAMS ]]
   then
      COUNT=1
   fi

done


COUNT=1
while [[ $COUNT -lt $NUM_STREAMS ]]
do
   /tmp/file_list.$$.$COUNT 1>/tmp/$$.$COUNT 2>&1 &
   let "COUNT = COUNT + 1"
done

wait

COUNT=1
while [[ $COUNT -lt $NUM_STREAMS ]]
do
   cat /tmp/$$.$COUNT
   let "COUNT = COUNT + 1"
done

echo "==================================================================="
COUNT=1
while [[ $COUNT -lt $NUM_STREAMS ]]
do
   echo "Stream $COUNT:"
   cat /tmp/$$.$COUNT | grep -i "Total number of bytes transferred"
   cat /tmp/$$.$COUNT | grep -i "Elapsed processing time"
   cat /tmp/$$.$COUNT | grep -i "Aggregate data transfer rate"
   echo "-------------------------------------------------------------------"
   let "COUNT = COUNT + 1"
done

# exit
echo $0 ended at $(date).
exit $RETCODE




-------------------------------------------------------------------------------------------
Miles Purdy 
System Manager
Farm Income Programs Directorate
Winnipeg, MB, CA
[EMAIL PROTECTED]
ph: (204) 984-1602 fax: (204) 983-7557
-------------------------------------------------------------------------------------------

>>> [EMAIL PROTECTED] 26-Jul-01 2:12:29 PM >>>
Hello *SMers,

        Here is a situation that we are trying to look at to hopefully cut
down our archive time.  I was wondering if any of you have an idea if it
would be possible.

Currently we are running TSM 4.1.2.0 on an AIX 4.3.3.0

We run a nightly archive of 70 GB that is taking just over 8 hours
uncompressed.   In our Magstar 3570 we have two different tape drives.   My
question follows:   Is it possible to be running two different archives at
the same time to cut down the processing time?   If it is possible how would
you go at it?   I know I see allot of *SMers talking about backup clients at
the same time, but the information we back up comes off of one RS/6000 AIX
server.    Is it possible to be running two sessions off the same machine at
the same time?


Any help would be grateful.

Thanks in Advance,

Bill Wheeler
AIX Administrator
La-Z-Boy Incorporated
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>

Reply via email to