Simplest case---backup local directory
foo to local
bar will end up a copy of
foo, except it will contain the directory
foo/rdiff-backup-data, which will allow rdiff-backup to restore
rdiff-backup foo bar
Simple remote case---backup directory
to the directory
/whatever/remote-dir on the machine
hostname.net. It uses ssh to open the necessary pipe to the remote
copy of rdiff-backup. Just like the above except one directory is on
a remove computer.
rdiff-backup /some/local-dir hostname.net::/whatever/remote-dir
This time the source directory is remote and the destination is local. Also, we have specified the username on the remote host (by default ssh will attempt to log you in with the same username you have on the local host).
rdiff-backup firstname.lastname@example.org::/remote-dir local-dir
It is even possible for both the source and destination
directories to be on other machines. Below we have also added the
-v5 switch for greater verbosity (verbosity settings go
from 0 to 9, with 3 as the default), and the
--print-statistics switch so some statistics will be
displayed at the end (even without this switch, the statistics will
still be saved in the
rdiff-backup -v5 --print-statistics user1@host1::/source-dir user2@host2::/dest-dir
Suppose earlier we have run
rdiff-backup foo bar,
with both foo and bar local. We accidentally deleted
foo/dir and now want to restore it from
That's right, since rdiff-backup makes a mirror, we can retrieve files using standard commands like
cp -a bar/dir foo/dir
For the rest of the examples in the section, we will assume
that the user has backed up with the command
local-dir host.net::/remote-dir. Of course, in all these
examples it would be equally possible to have the source being remote
and the backup directory local.
In this case we can't use
cp to copying
because they are on different machines. We can get rdiff-backup to
restore the current version of that file using either of these::
rdiff-backup --restore-as-of now host.net::/remote-dir/file local-dir/file
rdiff-backup -r now host.net::/remote-dir/file local-dir/file
-rfor short) switch tells rdiff-backup to restore instead of back up, and the
nowoption indicates the current time.
But the main advantage of rdiff-backup is that it keeps version
history. This command restores
host.net::/remote-dir/file as it was 10 days ago into a
Other acceptable time strings include
rdiff-backup -r 10D host.net::/remote-dir/file /tmp/file
5m4s(5 minutes and 4 seconds) and
2002-03-05(March 5th, 2002). For more information, see the TIME FORMATS section of the manual page.
Finally, we can use rdiff-backup to restore directory from an
increment file. Increment files are stored in
hold the previous versions of changed files. If you specify one
rdiff-backup will tell from the filename that it is an rdiff-backup increment file and thus enter restore mode. Above the restored version is written to
rdiff-backup host.net::/remote-dir/rdiff-backup-data/increments/file.2003-03-05T12:21:41-07:00.diff.gz local-dir/file
Although rdiff-backup tries to save space by only storing file
differences, eventually space may run out in the destination
--remove-older-than mode can
be used to delete older increments.
This section assumes that rdiff-backup has been used in the past to
back up to
host.net::/remote-dir, but all commands would
work locally too, if the hostname were ommitted.
This commands deletes all information concerning file versions which have not been current for 2 weeks:
Note that an existing file which hasn't changed for a year will still be preserved. But a file which was deleted 15 days ago cannot be restored after this command is run.
rdiff-backup --remove-older-than 2W host.net::/remote-dir
As when restoring, there are a variety of ways to specify the
20B below tells rdiff-backup to only preserve
information from the last 20 rdiff-backup sessions. (
syntax is only available in versions after 0.13.1.)
rdiff-backup --remove-older-than 20B host.net::/remote-dir
Sometimes you don't want to back up all files. The various
--exclude options can be used
to select exactly which files to back up. See the man page for a list
of all the options and their definitions.
In this example we exclude
avoid an infinite loop.
(Actually rdiff-backup can automatically detect simple loops like the one above.) This is just an example, in reality it would be important to exclude
rdiff-backup --exclude /mnt/backup / /mnt/backup
This example is more realistic. We have excluded
/proc in particular should never be backed up. Also, the
source directory happens to be remote.
rdiff-backup --exclude /tmp --exclude /mnt --exclude /proc email@example.com::/ /backup/host.net
Multiple include and exclude options take precedence in the
order they are given. The following command would back up
/usr/local/bin but not
rdiff-backup --include /usr/local --exclude /usr / host.net::/backup
rdiff-backup uses rsync-like wildcards, where
matches any path and
* matches any path without a
/ in it. Thus this command:
backs up only the
rdiff-backup --include /usr/local --include /var --exclude '**' / /backup
/vardirectories. The single quotes
''are not part of rdiff-backup and are only used because many shells will expand
Here is a more complicated example:
The above command will back up any file ending in
rdiff-backup --include '**txt' --exclude /usr/local/games --include /usr/local --exclude /usr --exclude /backup --exclude /proc / /backup
/usr/local/games/pong/scores.txtbecause that include has highest precedence. The contents of the directory
/usr/local/binwill get backed up, but not
include-listcontains these two lines:
Then this command:/var /usr/bin/gzip
would only back up the files
rdiff-backup --include-filelist include-list --exclude '**' / /backup
/usr/bin/gzip, but not
/usr/bin/gunzip. Note that this differs from the
--include /varwould also match
The same file list can both include and exclude files. If we
create a file called
include-list that contains these
Then the following command will do exactly the same thing as the complicated example two above.**txt - /usr/local/games /usr/local - /usr - /backup - /proc
Above we have usedrdiff-backup --include-globbing-filelist include-list / /backup
--include-filelistso that the lines would be interpreted as if they were specified on the command line. Otherwise, for instance,
**txtwould be considered the name of a file, not a globbing string.
rdiff-backup in-dir out-dirin the past.
This command finds all new or old files which contain the
rdiff-backup doesn't obscure the names of files at all, so often using traditional tools work well.
find out-dir -name '*frobniz*'
Either of these equivalent commands lists the times of the
available versions of the file
out-dir/file. It may be
useful if you need to restore an older version of
in-dir/file but aren't sure which one.
rdiff-backup --list-increments out-dir/file
rdiff-backup -l out-dir/file
The following command lists all the files under
out-dir/subdir which has changed in the last 5 days.
rdiff-backup --list-changed-since 5D out-dir/subdir
This command lists all the files that were present in
out-dir/subdir 5 days ago. This includes files that have
not changed recently as well as those that have been deleted in the
last 5 days.
rdiff-backup --list-at-time 5D out-dir/subdir
out-dir/rdiff-backup-datadirectory. An average of the files can be displayed using the
--calculate-averageoption and specifying the statistics files to use.
rdiff-backup --calculate-average out-dir/rdiff-backup-data/session_statistics*
If you are having problems connecting to a remote host, the
--test-server command may be useful. This command simply
verifies that there is a working rdiff-backup server on the remote
rdiff-backup --test-server hostname.net::/ignored