duplicacy
Backup and restore data incrementally
TLDR
Use current directory as the repository, initialize a SFTP storage and encrypt the storage with a password
Save a snapshot of the repository to the default storage
List snapshots of current repository
Restore the repository to a previously saved snapshot
Check the integrity of snapshots
Add another storage to be used for the existing repository
Prune a specific revision of snapshot
Prune revisions, keeping one revision every n days for all revisions older than m days
SYNOPSIS
duplicacy <command> [options] [arguments]
Examples:
duplicacy init <storage_url> <repository_id>
duplicacy backup
duplicacy restore -r <revision> -to <path>
duplicacy prune -keep <policy_args>
PARAMETERS
-v
Enables verbose output, showing more details about the operation.
-d
Enables debug output, providing extensive logging for troubleshooting.
-c <repository_path>
Specifies the path to the repository if the command is not run from the repository root directory.
-storage <storage_url>
Overrides the default storage URL configured for the repository.
-r <revision>
Specifies a particular snapshot revision number for commands like restore, diff, or cat.
-repository <repository_id>
Specifies the repository ID, useful when multiple repositories share the same storage.
(subcommand-specific options)
Each duplicacy subcommand (e.g., init, backup, restore, prune) has its own set of unique options. These can include options for encryption, include/exclude patterns, target paths, VSS support, or retention policies specific to that command.
DESCRIPTION
duplicacy is a robust, cross-platform cloud backup tool designed for efficiency and security. It offers client-side, AES-256 encryption and block-level deduplication, which significantly reduces storage space by identifying and storing identical data blocks only once, even across different backups. It supports a wide array of cloud storage providers, including Amazon S3, Google Cloud Storage, Azure Blob Storage, Dropbox, OneDrive, SFTP, and WebDAV, as well as local storage. Its snapshot-based approach allows for easy restoration to any previous state, while its incremental backup model ensures fast operation by only backing up changed data chunks. Written in Go, the command-line interface (CLI) is open-source, providing powerful and flexible control over your backup strategy.
CAVEATS
While powerful, duplicacy's performance with an extremely large number of very small files can be impacted by chunking overhead. The default glob-based include/exclude patterns can sometimes be unintuitive for users expecting regular expressions. The open-source CLI version does not include a graphical user interface; a commercial Web UI is available separately.
BLOCK-LEVEL DEDUPLICATION
duplicacy performs content-defined chunking and deduplicates data at the block level across all snapshots and repositories pointing to the same storage. This means if the same file (or even parts of files) exist in multiple backups or repositories, they are only stored once, leading to significant storage savings.
CLIENT-SIDE ENCRYPTION
All data is encrypted on the client side using AES-256-CTR with a passphrase-derived key before being uploaded to storage. This ensures that your data remains secure even if your cloud storage provider is compromised, as the data is unreadable without your passphrase.
SNAPSHOT MANAGEMENT
Every backup creates an immutable snapshot, identified by a revision number. These snapshots are lightweight as they only store metadata and references to data chunks. This allows for easy navigation, restoration, and pruning of specific backup states without affecting other snapshots.
CLOUD AGNOSTIC DESIGN
Beyond supporting various cloud providers, duplicacy's design allows for flexible movement of data between different storage backends, or even copying snapshots from one storage to another, enhancing portability and disaster recovery options.
HISTORY
duplicacy was developed by Gilbert Chen, with its initial public release around 2016. It was designed from the ground up to address the limitations of traditional backup solutions, focusing on modern cloud storage paradigms, efficient deduplication, and strong encryption. Written in Go, it quickly gained popularity in the cloud backup community for its performance and feature set.