« Previous 1 2 3 Next »
Encrypted backup with Duplicity
Packed and Sent
Incremental Backups
When first called, Duplicity always completely backs up the source directory. Once you invoke the command a second time, Duplicity only backs up the previously added or changed data (delta). This approach has the advantage that you can include the Duplicity call in a cron job or startup script, thus ensuring that Duplicity runs regularly and automatically. To do this, Duplicity uses the librsync library, which implements the well-known Rsync algorithm.
Incremental backups save space on the server and can be created much faster. However, if a read error occurs in one of the parts, the subsequent backups will very likely be useless. Moreover, recovery will take longer because Duplicity may first need to look at all the incremental backups. For this reason, you should perform a full backup at regular intervals. You can enforce this by specifying full
:
duplicity full /home/tim scp://dd@example.com//var/backup
In this case, full
is not a parameter but an action that needs to follow the program name directly. The --full-if-older-than
parameter tells Duplicity to create full backup if the last full backup was created more than a predetermined period ago (Figure 3) – in this example more than one month:
duplicity --full-if-older-than 1M /home/tim scp://dd@example.com//var/backup
You need to leave out the full
action in this case; otherwise, it would overrule the --full-if-older-than
parameter.
Instead of 1M
for a month, you can also specify other periods; for example, 14D
is 14 days. The appropriate value depends on your organization's backup strategy.
Duplicity does not pack the data to be backed up into a single huge archive; instead, it distributes the data to several smaller archives. Because these volumes can only grow to a maximum of 25MB by default, numerous small files accumulate over time on the server (Figure 4).
You can change this behavior using the --volsize
parameter, which lets you define the maximum size of each volume in megabytes. For example, --volsize 125
increases the size to 125MB. As the volume size increases, however, Duplicity also needs more RAM. You might want to exercise caution when increasing this value.
Including and Excluding Data
The --exclude
parameter lets you specifically leave out a subdirectory from the backup. In the following example, the tool would not back up the subdirectory /home/klaus/Videos
:
duplicity --exclude /home/klaus/Videos /home scp://dd@example.com//var/backup
If you want to back up the entire system via the root directory (/
), you should at least always exclude /proc
, the dynamic filesystem that provides a window into the running kernel. Otherwise, you are in danger of Duplicity tripping up all over its content. For each directory to exclude, you must specify the --exclude
parameter again. The --include
parameter lets you specifically include certain subdirectories. This example command
duplicity --include /home --include /etc --exclude / / scp://dd@example.com//var/backup
exclusively backs up the /home
and /etc
directories.
Easy Recovery
You can restore a backup by reversing the source and destination calls. The following example restores the backup stored in /var/backup
on the server example.com
to the /home/tim/restore
directory:
duplicity scp://dd@example.com//var/backup /home/tim/restore
On request, Duplicity even restores a single file. The parameter responsible for this, --<file-to-restore>
, expects the relative path to the file in which you are interested. For example, if you are backing up the /home/klaus
directory, you can restore the letter.txt
file originally stored in /home/klaus/Documents
with the following command:
duplicity --<file-to-restore> Documents/letter.txt scp://dd@example.com//var/backup letter_alt.txt
At the end of the call, Duplicity does not expect the directory in which to restore the file but rather a file name. In the preceding example, the tool retrieves the file letter.txt
from the backup and stores it in the current directory as letter_alt.txt
. The list-current-files
action lists all the files in a backup:
duplicity list-current-files scp://dd@example.com//var/backup
Using the --time
parameter, you can even revert to a certain file version. The following example retrieves exactly the version of the letter.txt
file that was stored in the backup seven days earlier. This assumes that Duplicity created a backup seven days ago:
duplicity --time 7D --<file-to-restore> Document/letter.txt scp://dd@example.com//var/backup letter_alt.txt
Alternatively, you can also specify a specific date; for example, --time 2015/9/10/
accesses the backup from September 10, 2015.
« Previous 1 2 3 Next »
Buy this article as PDF
(incl. VAT)
Buy ADMIN Magazine
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Most Popular
Support Our Work
ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.