rstash

rstash is a pair of programs for dropbox-oriented network file transfer.

The server program rstash-recv, run via inetd, provides a set of dropboxes into which other hosts can place files using the client program rstash-send. My current use case for it is transmitting backup files from VMs to the host machine without opening up automated-access shell accounts, NFS, or some other element of overkill that I then have to lock down.

rstash-recv is intended to be run from inetd as some low-privilege user, only having the privileges necessary to write to the file dropbox locations.

Documentation

The source installation contains and installs man pages for rstash and both utilities. For convenience, they are also available in HTML form here:

Status

rstash is currently in alpha status; it seems to work, but it may (probably does) have bugs.

Download and installation

Installation is autotooled, so do the usual configure/make/make install dance. After installing, set up a configuration file (default location is SYSCONFDIR/rstash-recv.conf) and add an entry to your inetd configuration to activate the server.

The source code is under the MIT license.

Development sources

If you want to monitor progress on rstash, the development sources are available from my Mercurial repository at [http://bitbucket.org/mdekstrand/rstash/][]. It’s a BitBucket repository, so the bug tracker is there too.

Supported platforms

rstash should work on any Unix-like system. It has been tested on GNU/Linux (Debian Lenny and Ubuntu 8.04) and FreeBSD 6.4 (client only).

Dependencies

The only dependency for rstash outside of a functioning build system and Unix-like operating system is mhash.

Other solutions

rstash is not the only solution to file transfer problems. There are, of course, ftp, ssh, nfs, and other heavyweight systems. As discussed above, rstash was designed for situations where these are undesirable overkill and unnecessarily difficult to secure.

Comparison with sendfile

Since writing rstash, I have been advised to the existence of sendfile, a system for asynchronously transferring large files between users on different hosts. It looks like sendfile can solve some of the same problems rstash was intended to, although sendfile is oriented towards user-to-user transfers and rstash towards host-to-host transfers (system administrators running backups, etc.). rstash has the following benefits over sendfile:

  • Authentication for incoming file connections – only clients with the authentication key can send files.
  • Server runs as an unprivileged user.
  • No receive program/instance – files show up directly in the drop box’s directory on the host system.

Disclaimer: I have not used sendfile myself, merely downloaded it and perused its documentation to see what I missed in my initial search for existing work. If my assessment here is incorrect, please let me know.

Support and contact

Bugs are tracked in the BitBucket issue tracker. If you have other questions questions, e-mail me directly.