| Author |
Message |
2hawks
Guest
|
Posted:
Thu Nov 03, 2005 5:16 pm Post subject:
Tape Scanning in Linux |
|
|
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?
Thanks much,
Robert |
|
| Back to top |
|
 |
Steve Cousins
Guest
|
Posted:
Fri Nov 04, 2005 12:02 am Post subject:
Re: Tape Scanning in Linux |
|
|
2hawks wrote:
| Quote: | 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 |
|
| Back to top |
|
 |
2hawks
Guest
|
Posted:
Sat Nov 05, 2005 9:15 am Post subject:
Re: Tape Scanning in Linux |
|
|
nice... thanks for that. That solves the cpio end of things for me I
guess. Now I wonder if that would work the same with tar.... or other
methods of writing to tape. Trick for me would be to develop a script
that just looked at the tape and did and ls of it... not dependent on
cpio or anything. |
|
| Back to top |
|
 |
Steve Cousins
Guest
|
Posted:
Mon Nov 07, 2005 5:16 pm Post subject:
Re: Tape Scanning in Linux |
|
|
2hawks wrote:
| Quote: | nice... thanks for that. That solves the cpio end of things for me I
guess. Now I wonder if that would work the same with tar.... or other
methods of writing to tape. Trick for me would be to develop a script
that just looked at the tape and did and ls of it... not dependent on
cpio or anything.
|
cpio will work with tar too. To check for what type of file is on the
tape you could try putting something like this in your script:
FILE_TYPE=`dd if=/dev/tape bs=32k count=1 | file -`
and then figure out what to do based on what is in the FILE_TYPE variable.
Have fun.
Steve |
|
| Back to top |
|
 |
2hawks
Guest
|
Posted:
Tue Nov 08, 2005 5:15 pm Post subject:
Re: Tape Scanning in Linux |
|
|
You are a gentleman and a scholar sir! Thanks for your assistance.
Btw, does anyone know if mt senses the actual block size when you do a
status (mt -f /dev/nst0 status) or is that based on driver defaults? |
|
| Back to top |
|
 |
|
|
|
|