Duplicity
By the Duplicity open-source project
Duplicity is an open-source command-line backup utility that creates encrypted, incremental backups by combining the rsync algorithm for detecting changes with GnuPG for encrypting the resulting data before it is stored. It builds a backup…
Definition
Duplicity is an open-source command-line backup utility that creates encrypted, incremental backups by combining the rsync algorithm for detecting changes with GnuPG for encrypting the resulting data before it is stored. It builds a backup as a full snapshot followed by a chain of incremental deltas, and it can write that chain to local disk, a remote server, or cloud object storage. It is used mainly on Linux systems for encrypted, bandwidth-efficient backups without needing a database or dedicated backup server.
Overview
Duplicity was designed to bring the change-detection efficiency of the rsync algorithm to encrypted backups, at a time when combining strong encryption with incremental backup was not straightforward with existing Unix tools. It solves the problem of needing both privacy and efficiency: a backup tool that only sends unchanged data as new but leaves it unencrypted in transit or at rest is not acceptable for many use cases, while one that encrypts everything but re-transfers full data on every run wastes bandwidth and storage. Mechanically, Duplicity computes incremental deltas the way rsync does, comparing the current state of files against signatures from a previous backup to identify what has changed, then bundles the changed data into an incremental archive. Each archive, whether a full backup or an incremental one, is encrypted using GnuPG before being written to the destination, so the storage backend never has unencrypted access to backup content. A restore replays the full backup and then applies the necessary chain of incrementals in order to reconstruct a point-in-time state. Compared to Restic and BorgBackup, Duplicity's chain-based model means restoring from deep incremental history requires processing the full chain back to the last full backup, which can be slower than the chunk-based deduplication approach those tools use, and a corrupted link in the chain can complicate restores in ways that content-addressed repositories are more resilient against. Duplicity's use of GnuPG also gives it a distinct trust model based on PGP keys rather than a repository-managed symmetric key. In practice, Duplicity is commonly used in scripted backup routines on Linux servers, and it underlies some graphical backup tools, such as Déjà Dup on GNOME desktops, that provide a simpler interface over Duplicity's command-line engine. It supports a range of destinations including SSH, cloud storage APIs, and local disks, making it adaptable to different backup topologies without additional infrastructure. Limitations include the operational overhead of managing a full-plus-incremental chain, which typically needs periodic new full backups to keep restore times reasonable and to bound the length of the incremental chain, and generally weaker deduplication compared to chunk-based tools when the same data appears across otherwise unrelated files. Teams prioritizing simpler pruning and stronger deduplication often choose Restic or BorgBackup instead. Duplicity remains popular in environments that already standardized on GnuPG for key management, since its encryption model fits naturally into existing PGP-based trust relationships rather than introducing a separate repository password or key scheme. Long-running Duplicity deployments typically script a recurring full backup, for example monthly, alongside daily incrementals, balancing restore-time bounds against the bandwidth cost of a fresh full backup.
Key Features
- Uses the rsync algorithm to detect and back up only changes
- Encrypts all backup data with GnuPG before storage
- Builds backups as a full snapshot plus incremental chain
- Supports local, SSH, and cloud object storage destinations
- Powers simpler graphical tools such as Déjà Dup
- Provides a scriptable command-line interface
- Restores by replaying a full backup and its incrementals
- Requires no dedicated backup server or database