noble (7) rdup-backups.7.gz

Provided by: rdup_1.1.15-1ubuntu4_amd64 bug

NAME

       rdup-backups - introduction into making backups with rdup

INTRODUCTION

       rdup  is  a  simple program that prints out a list of files and directories that are changed changed on a
       filesystem. It is more sophisticated than for instance find,  because  rdup  will  find  files  that  are
       removed or directories that are renamed.

       A  long  time ago rdup included a bunch of shell and Perl scripts that implemented a backup policy. These
       could be used in a pipeline to perform a backup.

       Currently rdup consists out of three basic utilities:

       rdup   With rdup you create the file list on which later programs in the pipeline can work.  The  default
              output  format  also  includes  the  files' content. rdup can be seen as a tar replacement in this
              respect, but rdup also allows for  all  kinds  of  transformations  of  the  content  (encryption,
              compression, reversal), see the -P switch in rdup(1) for more information.

       rdup-tr
              With  rdup-tr  you  can transform the files rdup delivers to you.  You can create tar, cpio or pax
              files. You can encrypt pathnames. rdup-tr is filter that reads from standard input and  writes  to
              standard  output.   See  rdup-tr(1)  for more information. With rdup and rdup-tr you can create an
              encrypted archive which is put in a directory structure that is also encrypted.

       rdup-up
              With rdup-up you can update an existing directory structure with the updates as described by rdup.

              rdup-up reads rdup input and will create the files, symbolic links,  hard  links  and  directories
              (and sockets, pipes and devices) in the file system. See rdup-up(1) for more information.

       So the general backup pipeline for rdup will look something like this:

           create filelist  |  transform |  update filesystem
           ( rdup           |  rdup-tr   |  rdup-up )

       Note 1:
              The  same  sequence is used for restoring. In both cases you want to move files from location A to
              B. The only difference is that the transformation is reversed when you restore.

       Note 2:
              The use of rdup-tr is optional.

BACKUPS AND RESTORES

       For rdup there is no difference between backups and restores. If you think about this for  a  minute  you
       understand why.

       Making  a backup means copying a list of files somewhere else. Restoring files is copying a list of files
       back to the place they came from. Same difference. So  rdup  can  be  used  for  both,  if  you  did  any
       transformation with rdup during the backup you just need to reverse those operations during the restore.

BACKUPS

       It  is  always  best  to backup to another medium, be it a different local harddisk or a NFS/CIFS mounted
       filesystem.  You can also use ssh to store file on a remote server, ala rsync (although  not  as  network
       efficient).

       If  you  backup  to  a  local disk you can just as well use rsync or plain old tar, but if you store your
       files at somebody else's disk you will need encryption. This is where you go beyond rsync and rdup  comes
       in.  Rsync  cannot  do per-file encryption, sure you can encrypt the network traffic with ssh, but at the
       remote side your files are kept in plain view.        If you implement remote backups, the easy route  is
       to  allow root access on the backup medium. If the backup runs without root access the created files will
       not have their original ownership.  For NFS this can be achieved by using  no_root_squash,  for  ssh  you
       could enable PermitRootLogin. Note that this may be a security risk.

SNAPSHOT BACKUPS

       We  need  a  little  help  here  in  the form of the rdup-simple script.  Keep in mind that the following
       scripts can also be run remotely with the help of ssh.

       The following script implements the algorithm of rdup-simple.

              #!/bin/bash
              # some tmp files are saved in ~/.rdup. This directory must exist
              DIR=/home     # what to backup
              BACKUP=/vol/backup
              TODAY=$(date +%Y%m/%d)
              LIST=~/.rdup/list-$HOSTNAME
              STAMP=~/.rdup/timestamp-$HOSTNAME

              # for remote backup, this has to run on the remote host!
              BUGBUG
              RET=$?

              case $RET in
                  2|*)
                   echo Error >&2
                   exit 1
                   ;;
                  1)
                   # full dump, remove file-list and time-stamp file
                   rm $LIST $STAMP
                   ;;
                  0)
                   # inc dump
                   # do nothing here
                   ;;
              esac
              # this is the place where you want to modify the command line
              # right now, nothing is translated we just use 'cat'
              rdup -N $STAMP -Pcat $LIST $DIR | rdup-up $BACKUP/$HOSTNAME/$TODAY

              # or do a remote backup
              #rdup -N $STAMP -Pcat $LIST $DIR | ssh root@remotehost \
              #    rdup-up $BACKUP/$HOSTNAME/$TODAY

LOCAL BACKUPS

       With rdup-simple you can easily create backups.  Backing up my home directory to a backup directory:

              rdup-simple ~ /vol/backup/$HOSTNAME

       This will create a backup in /vol/backup/$HOSTNAME/200705/15. So each day will have  its  own  directory.
       Multiple sources are allowed, so:

              rdup-simple ~ /etc/ /var/lib /vol/backup/$HOSTNAME

       Will  backup  your home directory, /etc and /var/lib to the backup location. Also if you need to compress
       your backup, simple add a '-z' switch:

              rdup-simple -z ~ /etc/ /var/lib /vol/backup/$HOSTNAME

REMOTE BACKUPS

       For a remote backup to work, both the sending machine and the receiving machine must have rdup installed.
       The currently implemented protocol is ssh.

       Dumping my homedir to the remote server:

              rdup-simple ~ ssh://miekg@remote/vol/backup/$HOSTNAME

       The  syntax  is almost identical, only the destination starts with the magic string 'ssh://'. Compression
       and encryption are just as easily enabled as with a local backup, just add '-z'  and/or  a  '-k  keyfile'
       argument:

              rdup-simple -z -k 'secret-file' ~ ssh://miekg@remote/vol/backup/$HOSTNAME

       Remember  though, that because of these advanced features (compression, encryption, etc, ...) the network
       transfer can never be as efficient as rsync.

ALSO SEE

       rdup(1), rdup-tr(1), rdup-up(1) and http://www.miek.nl/projects/rdup/