I've copied below a couple of responses that I got from the HP forum the DD solution worked on my test file and I haven't tried the script yet (need to get time on a system).
Unlike the response below I found that it worked with /dev/rmt/#m and it had problems using the /dev/rmt/#mnb with the blocksize set to 10K, but then I only had one test tar on the tape. Your milage may vary
------------------------------------------------
Your fundamental problem is determining the block size of the source tape. I would do it like this (and assuming this is tar format rather):
dd if=/dev/rmt/2m (or whatever) ibs=10k obs=512 | tar vtf -
This will produce a listing to stdout. When you get the input blocksize correct, you will see no errors. If 10k doesn't work, try 5k; eventually you will get there.
Once that is done, you simply use dd and set bs equal to the ibs determined by the method above.
I suggest that if you do have multiple tar archives on the source tape that you use the Berkeley style norewind devices (e.g. /dev/rmt/2mnb).
-------------------------------------------------------------------------
I think the issue here is that the tape contains multiple filemarks - dd will only copy a single filemark - however a quick script will automate using the no rewind tape
devices.
We did something like this on an RS/6000(untested on HP9000)
#!/usr/bin/ksh
var1=0
while true
do
dd if=/dev/rmt/0mn of=/dev/rmt/1mn bs=10k
if [[$? -eq 0]]
then
print "File copied" $var1
((var1=var1+1))
else
print "Finished"
exit
fi