[comp.unix.questions] Use of dump: verification technique, error recovery?

sam@bsu-cs.UUCP (B. Sam Blanchard) (02/20/89)

Question:
	Can I induce a condition that will cause dump to restart a tape
	instead of aborting the whole dump?

	If so,
	is it too late to use the checkpoint at the end of tape #1 when
	dump is prepared to begin tape #2?
	(dump documentation mentions checkpoints)

	Alternatively,
	can I trick dump into writing 'some' tapes to /bin/null and others
	to /dev/rmt8 (thus allowing selective tapes to be written).  I think
	single user mode should insure that all data would match but am not
	sure if this is possible or if dump will complain about mix & match
	tapes.

I am doing backups on a VAX 11/785 running 4.3bsd UNIX using the program
backup.

The tapes are verified using:
	for the first tape only
		restore -tf /dev/rmt8 > /dev/null
	for all tapes
		dd if=/dev/rmt8 of=/dev/null bs=10k

	(looks familiar eh!)

The order of operations is:
	issue the dump command
	for each tape written
		allow dump to write to tape
		suspend dump (when it asks if next tape is mounted)
		verify tape appropriately
	done

By verifying each tape during the dump, I avoid having to redo tapes subsequent
to an error.

Situation:
	Today I got a hard error from my tape #2 (not bad with this sinerio).
	I aborted the dump and started over (rewritting tape #1 which had
	already been verified).

DUMP documentation:
	Dump documents itself as checkpointing after each tape so that dump
	itself can recover if dump finds an error in the current tape.

Question:
	Can I induce a condition that will cause dump to restart a tape
	instead of aborting the whole dump?

	Is it too late to use the checkpoint at the end of tape #1 when
	dump is prepared to begin tape #2?

	Alternatively,
	can I trick dump into writing 'some' tapes to /bin/null and others
	to /dev/rmt8 (thus allowing selective tapes to be written).  I think
	single user mode should insure that all data would match but am not
	sure if this is possible or if dump will complain about mix & match
	tapes.
-- 
B. Sam Blanchard         UUCP:  <backbones>!{iuvax,pur-ee}!bsu-cs!sam

jamesa@arabian.Sun.COM (James D. Allen) (02/21/89)

In article <5776@bsu-cs.UUCP>, sam@bsu-cs.UUCP (B. Sam Blanchard) writes:
> I am doing backups on a VAX 11/785 running 4.3bsd UNIX using the
> program backup.

I know about 4.2bsd `dump'.  Maybe it's the same.

> 
> The order of operations is:
> 	issue the dump command
> 	for each tape written
> 		allow dump to write to tape
> 		suspend dump (when it asks if next tape is mounted)
> 		verify tape appropriately
> 	done
> 
> Question:
> 	Can I induce a condition that will cause dump to restart a tape
> 	instead of aborting the whole dump?

Yes.  In Sam's scenario, `dump' has just printed
	"Mount tape #N"
	"Is the new tape ready? [yes or no]: "
but Sam wants to mount tape #(N-1) and rewrite it.

Do the following:
	1) Acquire a shell prompt.  (For example, press control-Z).
	2) Identify all dump processes with something like:
		% ps agxl | grep dump
	3) There will be N processes.  Identify the youngest process
	   using the PPID field of the `ps l' printout.  Suppose
	   the youngest process's PID is 8818.
	4) Convince `dump' there was an error on tape #(N-1):
		% kill -6 8818
	5) Do a `fg' if necessary to resume `dump'.

> 	Alternatively,
> 	can I trick dump into writing 'some' tapes to /bin/null and others
> 	to /dev/rmt8 (thus allowing selective tapes to be written).  I think
> 	single user mode should insure that all data would match but am not
	                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
No guarantees unless the filesystem has been mounted at worst
READONLY throughout the entire scenario.

> 	sure if this is possible or if dump will complain about mix & match
> 	tapes.

Since `dump' does an open() for each volume, you can trick it with
symbolic links:
	% ln -s /dev/null tricky_foo
	% dump 0f[et cetera] tricky_foo [et cetera]

When `dump' tells you to Mount the volume(s) you DO want to write, acquire
a shell prompt and type:
	% rm tricky_foo ; ln -s /dev/rmt8 tricky_foo
Change it back-and-forth between `/dev/null' and `/dev/rmt8' as you
wish.

> -- 
> B. Sam Blanchard         UUCP:  <backbones>!{iuvax,pur-ee}!bsu-cs!sam

James Allen