View Single Post
  #2  
Old November 3rd 05, 06:02 PM
Steve Cousins
external usenet poster
 
Posts: n/a
Default Tape Scanning in Linux

2hawks wrote:

Hi,

Could someone kindly tell me how to scan tapes in Linux. For example,
if there are multiple cpio archives on one tape, how can I find out how
many are on it? If I am thinking correctly, cpio will only list
whatever is the first archive it finds.

Is it in the method of addressing the device? st0 and nst0 etc? or is
there a utility or command that can essentially ls the tape in the
drive?


I just wrote a script to do something very similar with some old Amanda
tapes I have. Yours should be much simpler. I've changed it to do what
I think you want:

=======================
#!/bin/sh

# Script to do a cpio inventory of a tape.
#
# Assumes: 1. /dev/tape - /dev/nst0 or other non-rewinding tape device
# 2. not more than 100 tape files on the tape
# 3. programs: mt, seq, cpio, grep, wc, and bc are in PATH
# 4. mt reports "EOD" after end of last tape file is reached

mt rewind

for FILENUM in `seq 1 100`
do
echo "============================="
echo " Contents of file $FILENUM: "
echo "============================="
cpio -tv /dev/tape

# Check to see if we are at the end of the tape:
END_TEST=`mt status | grep EOD | wc -l | bc`
if [ "$END_TEST" = "1" ]
then
mt offline
exit
fi
done
=======================

While this isn't the most elegant script, it gets the job done. It will
give a "Input/Output" error after it gets to the end of the last file
because the status is EOF until the last cpio is done and then it goes
to EOD. Anyone have a better solution to this?

I'd run this as:

./ti.sh tape_1.log

to save the inventory to a file.

Good luck,

Steve