LinuxCommandLibrary

duplicacy

Backup and restore data incrementally

TLDR

Use current directory as the repository, initialize a SFTP storage and encrypt the storage with a password

$ duplicacy init [[-e|-encrypt]] [snapshot_id] [sftp://user@192.168.2.100/path/to/storage/]
copy

Save a snapshot of the repository to the default storage
$ duplicacy backup
copy

List snapshots of current repository
$ duplicacy list
copy

Restore the repository to a previously saved snapshot
$ duplicacy restore -r [revision]
copy

Check the integrity of snapshots
$ duplicacy check
copy

Add another storage to be used for the existing repository
$ duplicacy add [storage_name] [snapshot_id] [storage_url]
copy

Prune a specific revision of snapshot
$ duplicacy prune -r [revision]
copy

Prune revisions, keeping one revision every n days for all revisions older than m days
$ duplicacy prune -keep [n:m]
copy

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.

SEE ALSO

borgbackup(1), restic(1), rsync(1), tar(1)

Copied to clipboard