Recovery
Recovery is not automated, but if you need it, you'll be motivated to follow this simple manual process.
To retrieve a backup, use js3tream to download the files you need, then decrypt them with GPG, then extract the tarballs. Always start with the most recent FULL backup, then apply all available diffs in date order, regardless of the slot number.
The procedure will be something along these lines:
java -jar js3tream.jar --debug -n -f -v -K $s3keyfile -o -b $bucket:$name | gpg -d | tar xvz
Note that because of the streaming nature of all this, you can extract part of an archive even if there's not enough disk space to store the entire archive. You'll still have to download the whole thing, unfortunately (throwing most of it away without writing to disk), since it's only at the tar stage that you can select which files will be restored.
java -jar js3tream.jar --debug -n -f -v -K $s3keyfile -o -b $bucket:$name | gpg -d | tar xvz /path/to/desired/file
The name of the file you want ("$name" above) has the slot number and the type (FULL or DIFF) appended to it before being sent to S3. So it likely has a name like mybucket:/some/path-5-FULL or some such.
The easiest way to figure out which one you want is to use an S3 browsing program to see what files are actually in your bucket (I've used S3browser and S3hub on the Mac; I don't recommend the s3fox Firefox extension because it gets confused by leading slashes on the filenames).
If there are multiple versions in different slot numbers, look at the dates to figure out which one you want. The usage of the numbers wraps around, so higher numbers are not necessarily more recent. This is especially true for the Hanoi rotation, in which the relationship between slot numbers and dates is entirely scrambled.
js3tream breaks the files into chunks, and appends the chunk number after a colon. So your bucket will have something looking like mybucket:/some//path-5-FULL:0000000000000, or maybe a series of these if there are multiple chunks. Of course js3tream knows how to re-join the chunks, so just give it the part before the colon.
Finally note that the resulting file is in fact a tar file (or the gpg-encrypted version of that, if enabled), though it may not automatically get a .tar extension.
Next: Future Improvements
