Hi,
Basically I'm trying to emulate what vdump does when it hits the EOT, in the
case of rvdump. At the moment when vdump hits the EOT, it asks for another
tape, however when rvdump hits the EOT, it spits the dummy and outputs the
following messages.
remote error from write() is: No space left on device
or the filepath could be too long for remote rmt version
(older versions only allowed 64 characters): errno 28
rvdump: out of space and unable to prompt input for new tape; [45]
Operation not supported on socket
Basically I'm running a script on a machine that has an autochanger attached
to it. The script backs up all the local drives and then tries to backup
remote drives with a command that looks like this
rsh <remote> /sbin/rvdump -u -U -0 -f <local>:/dev/ntape/tape4_d1
<some file system>
rvdump gets rmt to write the dump data across the network on the autochanger
host (ie <local> above). The code for rmt was published in Richard Steven's
book Unix Network Programming. So I was thinking of modifying that code to
handle the autochanger. However there are a number of things that I need to
know about rvdump and rmt.
(a) Compaq or DEC seem to have fiddled with rmt (this I can't really
believe) and seem to have invented their own rmt protocol, because the Tru64
version and the DU version of rmt will not handle the example test from Unix
Network Programming (pp 678). There is also evidence from Compaq's man page,
which shows a slightly different format for rmt commands than is shown in
the following man page
http://www.gsp.com/cgi-bin/man.cgi?section=8&topic=rmt .
I think Compaq has modified the rmt protocol to suit themselves for some
unknown and I don't see how their rmt is supposed to work in a mixed
platform environment anyway. I ran exactly the same script on a Solaris box
and it the worked perfectly. Wherein lies another problem, how do you modify
rmt if the program at the other end (ie rvdump) isn't talking the right
language (protocol).
(b) I also need to know what vdump does when it hits the EOT. I assume that
the last block on the tape would be incomplete, and I guess there are a
number of options as to what to do with that block. rvdump could -
(i) scrap the incomplete information and write the entire block on
the next tape, or
(ii) leave the incomplete information at the end of the last tape
and only write the unwritten information to the next tape.
Basically when I do a restore, I will do the restore locally and then
transfer the information to the remote host, so if the rvdump part of the
dump, looked exactly like a vdump fileset then everything should be hunky
dory.
Dennis
Here is my test script if someone wants to test it on their machine.
*********************
#!/bin/sh
TEMP=/tmp/temp.foo
if [ -f $TEMP ]
then
rm $TEMP
fi
cat > $TEMP << EOF
now is the time
for all good computers
to come to the aid
of their programmer
EOF
ls -alg $TEMP
rmt << EOF
O$TEMP
0
R50
R60
L50
0
R60
C
EOF
*********************
You should get output that looks like this
*********************
-rw-r--r-- 1 other 78 Feb 8 11:54 /tmp/temp.foo
A3
A50
now is the time
for all good computers
to come to A28
the aid
of their programmer
A50
A28
the aid
of their programmer
A0
*********************
If you have the book, you might note that A3 is returned on the Solaris
rather than A0 from the Open command.
######################################
Dennis Macdonell
Systems Administrator
National Mapping Division, Geoscience Australia
mail: PO Box 2, Belconnen, ACT 2617
email: mcdonell_at_auslig.gov.au
ph: 61 2 6201 4326
fax: 61 2 6201 4377
######################################
Received on Fri Feb 08 2002 - 01:02:53 NZDT