1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
|
'\" t
.TH RDUP-BACKUPS 7 "15 Dec 2008" "1.1.x" "rdup"
.SH NAME
rdup-backups \- introduction into making backups with rdup
.SH INTRODUCTION
\fBrdup\fR 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 \fIfind\fR, because \fBrdup\fR
will find files that are removed or directories that are renamed.
A long time ago \fBrdup\fR included a bunch of shell and Perl scripts
that implemented a backup policy. These could be used in a pipeline
to perform a backup.
.PP
Currently \fBrdup\fR consists out of three basic utilities:
.TP
.B rdup
With \fBrdup\fR you create the file list on which later programs in the
pipeline can work. The default output format also includes the files'
content. \fBrdup\fR can be seen as a tar replacement in this respect,
but \fBrdup\fR also allows for all kinds of transformations of
the content (encryption, compression, reversal), see the -P switch in rdup(1)
for more information.
.TP
.B rdup-tr
With \fBrdup-tr\fR you can transform the files rdup delivers to you.
You can
create tar, cpio or pax files. You can encrypt pathnames. \fBrdup-tr\fR is
filter that reads from standard input and writes to standard output.
See rdup-tr(1) for more information. With \fBrdup\fR and \fBrdup-tr\fR
you can create an encrypted archive which is put in a directory
structure that is also encrypted.
.TP
.B rdup-up
With \fBrdup-up\fR you can update an existing directory structure with the
updates as described by rdup.
\fBrdup-up\fR reads \fBrdup\fR 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.
.PP
So the general backup pipeline for \fBrdup\fR will look something like
this:
create filelist | transform | update filesystem
( rdup | rdup-tr | rdup-up )
.TP
.B 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.
.TP
.B Note 2:
The use of \fBrdup-tr\fR is optional.
.SH BACKUPS AND RESTORES
For \fBrdup\fR there is \fIno\fR 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 \fBrdup\fR can be used for both, if you did any
transformation with \fBrdup\fR during the backup you just need to
reverse those operations during the restore.
.SH BACKUPS
It is always best to backup to \fIanother\fR medium, be it a different
local harddisk or a NFS/CIFS mounted filesystem.
You can also use \fIssh\fR 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 \fBrsync\fR 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 \fBrsync\fR and
\fBrdup\fR 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 \fBno_root_squash\fR, for
\fBssh\fR you could enable \fIPermitRootLogin\fR. Note that this
may be a security risk.
.SH SNAPSHOT BACKUPS
We need a little help here in the form of the \fBrdup-simple\fR script.
Keep in mind that the following scripts can also be run remotely with
the help of \fBssh\fR.
The following script implements the algorithm of \fBrdup-simple\fR.
.RS
.nf
#!/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
.fi
.RE
.SH LOCAL BACKUPS
With \fBrdup-simple\fR you can easily create backups.
Backing up my home directory to a backup directory:
.RS
rdup-simple ~ /vol/backup/$HOSTNAME
.RE
This will create a backup in /vol/backup/$HOSTNAME/200705/15. So
each day will have its own directory. Multiple sources are allowed, so:
.RS
rdup-simple ~ /etc/ /var/lib /vol/backup/$HOSTNAME
.RE
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:
.RS
rdup-simple -z ~ /etc/ /var/lib /vol/backup/$HOSTNAME
.RE
.SH REMOTE BACKUPS
For a remote backup to work, both the sending machine and the receiving
machine must have \fBrdup\fR installed. The currently implemented
protocol is \fIssh\fR.
Dumping my homedir to the remote server:
.RS
rdup-simple ~ ssh://miekg@remote/vol/backup/$HOSTNAME
.RE
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:
.RS
rdup-simple -z -k 'secret-file' ~ ssh://miekg@remote/vol/backup/$HOSTNAME
.RE
Remember though, that because of these advanced features (compression,
encryption, etc, ...) the network transfer can never be as efficient as
\fBrsync\fR.
.SH ALSO SEE
rdup(1), rdup-tr(1), rdup-up(1) and http://www.miek.nl/projects/rdup/
|