RDUP-TR(1)
NAME
rdup-tr - transform rdup output
SYNOPSIS
rdup-tr [-Pcmd,opt1,...,opt7]... [OPTION]...
DESCRIPTION
Transform rdup output into something else. Where something else can be
a tar, cpio, pax archive or another rdup stream (An rdup stream is rdup
-c output).
The default is reading a normal rdup file list and writing rdup streams. Thus the input expected is the normal rdup output, i.e. the list of pathnames and some extra information, but no file content.
The output of rdup-tr is a rdup -c stream, i.e. the list of pathnames with the file content (which is possibly transformed by rdup-tr).
You can select other types of output (-O flag), but you must be aware
that you may loose some information in formats other than rdup's own,
see the table below.
You may also supply rdup-tr with only a list of pathnames, this can be
selected with the -L flag.
When creating output you might also want to 'pipe' the contents of each
file through a number of commands, say a compression and encryption
utility. Note that this is different than compressing the entire archive which can be done (for instance) by using the -z option of GNU
tar. So this is where rdup-tr comes in. It allows you to create a normal archive in which each file is encrypted (or compressed. reversed
or whatever). rdup-tr does this by forking child processes which transform the contents.
If one of the forked children returns an exit code other than zero (0),
it is assumed the whole conversion process failed. In that case the
original file content is printed as-is.
This command combines all previously written rdup-utils (rdup-gzip,
rdup-crypt, rdup-gpg, etc) into a single executable, making it much
more maintainable. And allowing for cool new features, see -X (path
encryption) for instance.
- As said rdup-tr works by forking off a number of child processes (those
commands named with the -P option(s)), interconnecting these with
pipes. The current file is connected to the first child. The output
created by these child processes is captured by the parent (rdup-tr).
The contents is then written to standard output in an archive format.
As a picture says more than a thousand words here is an ASCII image:
- +--- ... (stdout) ... ----> archive
- /
- rdup-tr <--- ... ... <----+
- |
- loop #files |
- |
- file ---> cmd1 | cmd2 | ...| cmdN
- The following table shows what happens with the output depending on the input.
- 0 OK
- D delete information is lost
- H hardlink information is lost
| |- output | tar,cpio,pax | rdup
- input | |
------------- | ------------- | ------rdup | D | 0
filelist | DH | H - | |
OPTIONS
- -Pcommand,opt0,...,opt6
- Filter all output through command, opt0 through opt6 are given as options to the command. Multiple -P's can be used, there is however a maximum of seven options for each command. The options are separated with commas, there must be no space in between.
- Due to the nature of pipes in Unix, this pipeline is recreated for every file processed.
- -L Select list input format. Normally rdup-tr accepts rdup output,
- with this option you can give it a list of path names.
- -O Output format. This can be 'tar', 'cpio', 'pax' or 'rdup'. It
- defaults to 'rdup'.
- -X key Read the encryption key from the file key and encrypt all paths
- with AES and this key. After the encryption the binary data is converted into ascii using an URL safe (Section 4 of RFC 3548) version of base64 encode.
- The encryption key must be on the first line and the key size must be 16, 24 or 32 bytes. Anything above 32 will be truncated.
- -Y key Read the decryption key from the file key and decrypt all paths
- with AES and this key. Before the encryption the paths are converted to binary by using an URL safe version of base64 decode.
- -c Force output to the tty. Normally rdup-tr wants to see it's out
- put redirected.
- -v Be more verbose.
- -V Print rdup-tr's version.
- -h A short help.
EXAMPLES
- I have a new favorite pipeline since rdup release 0.9.0
- rdup /dev/null /home | \
rdup-tr -Pgzip -Pmcrypt,-fKEY,-c -O tar -Xboe | \
gzip > my-home-zipped-crypted-pathcrypted-tar.gz - That is: all files under /home are gzipped and encrypted on a per file basis. Further more, all pathnames are AES encrypted. This is put in a tar file, which is then compressed, resulting in the final output.
- Creating a compressed and encrypted tar archive out of a full rdup dump might be done as follows
rdup /dev/null /home | rdup-tr -Pgzip\
-Pmcrypt,-fKEY,-c -O tar > my-home-zipped-and-crypted.tar- Or even pack and unpack it on the fly
rdup /dev/null /home | rdup-tr -Pgzip\
-Pmcrypt,-fKEY,-c -O tar | ssh user@remotehost tar xvCf /tmp- When unzipping an "archive", gzip will do the right thing wrt to files that are not compressed and will just print them as-is. So the following will work
rdup /dev/null /home | ./rdup-tr -c -Pgunzip- Encryption with openssl
rdup /dev/null /home | ./rdup-tr -c -Popenssl,enc,-e,-des- cbc,-k,secret
- Or, compressing with gzip, encrypting with openssl and then compressing the entire archive yet again
rdup /dev/null /home | ./rdup-tr -Pgzip\
-Popenssl,enc,-e,-des-cbc,-k,secret | gzip >\
my_compressed_encrypted_rdup_archive.gz- Recreating the original rdup (-c) output, which can be fed to rdup-up.
gunzip -c my_compressed_encrypted_rdup_archive.gz |\
rdup-tr -Popenssl,enc,-d,-des-cbc,-k,secret -Pgzip,-d >\
my_rdup_archive- Notice the reversal of the -P options.
EXIT CODE
rdup-tr return a zero exit code on success, otherwise 1 is returned.
AUTHOR
Written by Miek Gieben.
REPORTING BUGS
Report bugs to <miek@miek.nl>.
SEE ALSO
http:/www.miek.nl/projects/rdup/ is the main site of rdup. Also see
rdup(1), rdup-up(1) and rdup-backups(7).
COPYRIGHT
Copyright (C) 2005-2009 Miek Gieben. This is free software. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- Licensed under the GPL version 3. See the file LICENSE in the source
distribution of rdup.