This has been a great discussion, folks. Lots of food for thought. Rather than respond to other comments, I'm going to summarize what I think the requirements are, and then discuss some specific design considerations. Requirements: minimal requirement for a host to be backed up: an archive program that can write to stdout, an rshd that works, and a C compiler to compile a wrapper that somehow deals with the exit status of the remote command. Implementation: There are really 2 separate proxy schemes: one allows one host to "run" the backup for another through rsh. This would probably be used in special cases where the host to be backed up doesn't have Perl or NFS or the db library or whatever. Call this a "backup proxy". The other proxy is a general mechanism for dealing with the output of the archive programs. Call this a "tape proxy". backup proxy I don't think this needs to be complicated. Until we have a tape proxy running, the proxy host just needs to rsh a backup command to the host being backed up, ala "rsh foo dump 0f allosaur:/dev/nrst0". The only hard part is dealing with the rsh status info (see below). tape proxy I've described this before, so I won't go into it here, except to say that its the program that would handle all archive output, redirect it to disk or tape, handle eot (tape rollover, interact with a jukebox, request that the oper mount a tape, whatever). I was thinking of having it make database lookups/updates directly, but that may not be feasible, in which case it will have to have some sort of contact with the master db process (needs to update the tflist in each backup entry as it moves to new tapes, needs to be able to inquire about the next tape/drive to roll to, lock tape devices and so on). I was planning on writing it so that each piece wouldn't need to retain a window of buffered data - it would just write things through to the tape proxy that was actually handling the tape device. If that proxy needs to move things to a new host, it would contact the original proxy and write the unwritten data back to it and die. The original could then create a new proxy on the correct host and send that data to it. rsh status info This is a tough problem, and I need to solve it in a general way, so that I get correct status info when I do "rsh dd" to write a tape label, and other things. We need a wrapper of some sort that records the exit status of the command being run. I'm not sure how best to report that status, however. I'll have to think about that.