Metadata-Version: 2.4
Name: duplicity
Version: 4.0.0.dev6
Summary: Encrypted backup using rsync algorithm
Author-email: Kenneth Loafman <kenneth@loafman.com>
Maintainer: Edgar Soldin, Thomas Laubrock
Project-URL: Homepage, http://duplicity.us
Project-URL: Download, https://gitlab.com/AlphaPrime/duplicity4/-/releases
Project-URL: Issues, https://gitlab.com/AlphaPrime/duplicity4/-/issues
Project-URL: Contact, https://lists.nongnu.org/mailman/listinfo/duplicity-talk
Project-URL: Documentation, http://duplicity.us
Project-URL: Repository, https://gitlab.com/AlphaPrime/duplicity4.git
Project-URL: Changelog, https://gitlab.com/AlphaPrime/duplicity4/-/blob/duplicity4/CHANGELOG.md
Classifier: Development Status :: 6 - Mature
Classifier: Environment :: Console
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX
Classifier: Programming Language :: C
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Topic :: System :: Archiving :: Backup
Requires-Python: <3.16,>=3.10
Description-Content-Type: text/markdown
License-File: COPYING
License-File: AUTHORS.md
Requires-Dist: fasteners>=0.19
Requires-Dist: httplib2
Requires-Dist: pysocks
Requires-Dist: requests
Requires-Dist: requests-oauthlib
Requires-Dist: zlib_ng>=1.0.0
Requires-Dist: azure-storage-blob
Requires-Dist: b2sdk
Requires-Dist: boto3
Requires-Dist: botocore
Requires-Dist: boxsdk[jwt]
Requires-Dist: dropbox
Requires-Dist: gdata-python3
Requires-Dist: google-api-python-client
Requires-Dist: google-auth-oauthlib
Requires-Dist: jottalib
Requires-Dist: mediafire
Requires-Dist: megatools
Requires-Dist: paramiko
Requires-Dist: pexpect
Requires-Dist: pydrive2
Requires-Dist: python-swiftclient
Dynamic: license-file

# Duplicity 4

Duplicity 4 (`duplicity4`) backs directories by producing encrypted, tar-format volumes and uploading them to a remote or local storage backend. By using librsync and the rsync algorithm, Duplicity generates bandwidth- and space-efficient incremental archives that only record binary deltas of changed files. Archives are encrypted and signed using GnuPG (via GPGME) to ensure privacy, integrity, and authenticity.

## Key Features

- **Concurrent Backend Worker Pool**: Multi-worker asynchronous volume compression, encryption, and upload pipeline (`src/backend_pool.py`) for significantly faster backups.
- **Concurrent Restore Prefetching**: Asynchronous volume prefetching for restore and verification operations.
- **Hardware-Accelerated Compression**: High-throughput compression using `zlib-ng`.
- **Advanced File Handling**: Native sparse file detection and efficient chunking (`--sparse`) alongside preserved hardlink reconstruction (`--hardlinks`).
- **Encrypted & Signed Backups**: Uses GnuPG via GPGME to encrypt and sign archives with standard OpenPGP or CMS (X.509) keys.
- **Bandwidth & Space Efficient**: Employs librsync to compute binary deltas for changed files in incremental backups.
- **Standard Archive Format**: Volumes are standard POSIX `tar` format archives encrypted with OpenPGP/CMS.
- **Extensive Storage Backend Support**: Backups can be stored locally or uploaded to cloud and remote services (SSH/SFTP, rsync, Amazon S3, Backblaze B2, Google Cloud Storage, Microsoft Azure Blob, Google Drive, Microsoft OneDrive, Dropbox, WebDAV, Swift, Mega, and more).
- **Restartable Transfers**: Asynchronous volume generation and transfer resume support for reliable operation over interrupted connections.
- **Standardized Logging**: Python standard logging integration with named severity levels (`error`, `warning`, `notice`, `info`, `debug`, `critical`) and machine-readable output options.

## Quick Start Examples

### 1. Perform a Backup
```shell
# Backup local directory to a remote SFTP destination
duplicity /home/user/data pex+sftp://user@example.com/backup

# Force a full backup
duplicity full /home/user/data pex+sftp://user@example.com/backup
```

### 2. Restore Files
```shell
# Restore the entire latest backup to a destination folder
duplicity restore pex+sftp://user@example.com/backup /home/user/restore

# Restore a specific file from 3 days ago
duplicity restore --file-to-restore document.txt --time 3D pex+sftp://user@example.com/backup /home/user/document.txt
```

### 3. Verify and Compare Backup Integrity
```shell
# Compare remote backup contents against the local filesystem
duplicity compare pex+sftp://user@example.com/backup /home/user/data

# Verify remote backup volume checksums and integrity
duplicity verify pex+sftp://user@example.com/backup /home/user/data
```

### 4. Check Backup Status and List Files
```shell
# Show collection status (backup sets and volume chains)
duplicity collection-status pex+sftp://user@example.com/backup

# List all files currently contained in the backup archive
duplicity list-current-files pex+sftp://user@example.com/backup
```

## System Requirements

- **Python**: Python >= 3.10 (tested through Python 3.15).
- **C Libraries**: `librsync` (>= 0.9.7, 2.x recommended), `libgpgme` (GPGME C library), `zlib-ng`.
- **GnuPG**: `gpg` (2.x), `gpgsm`, and `python3-gpg` (GPGME Python bindings).
- **Build Tools**: C compiler (`gcc` or `clang`), `make`, `python3-dev`, `swig`, `pkg-config`.

## Documentation & Guides

Comprehensive guides for users, packagers, and developers are organized in the `README/` directory and documentation:

- [Installation Guide](README/README-INSTALL.md) — Comprehensive installation instructions (pipx, apt, pip venv, source).
- [Architecture & Design](README/README-ARCH.md) — Internal design, volume formats, signature chains, and encryption workflow.
- [Repository & Development Guide](README/README-REPO.md) — Source tree setup, building C extensions, and running from source.
- [Testing Guide](README/README-TESTING.md) — Running tests with Docker, pytest, parallel workers, and test isolation guidelines.
- [Call for Testing](README/README-TESTING-CALL.md) — Call for testing Duplicity 4.0 pre-releases, focus areas, and feedback channels.
- [Logging Subsystem & Protocol](README/README-LOG.md) — Named log levels, command-line flags, and machine-readable output protocol.
- [Release Process](README/README-RELEASE.md) — Release checklists, versioning guidelines, Launchpad PPAs, snaps, and PyPI packaging.
- [Snap Packaging](README/README-SNAP.md) — Building and testing multi-architecture Snap packages.
- [Sphinx Documentation Guide](docs/README.md) — Building HTML documentation locally and ReadTheDocs configuration.
- [Backend Development Guide](src/backends/README.md) — Guide to implementing and testing new storage backends.
- [Test Keyring Reference](testing/gnupg/README.md) — Test GnuPG keys, fingerprints, and passphrases.

## Help & Community

- **Official Website**: <https://duplicity.us>
- **Project Repository**: <https://gitlab.com/AlphaPrime/duplicity4.git>
- **Issue Tracker**: <https://gitlab.com/AlphaPrime/duplicity4/-/issues>
- **Online Documentation**: <https://duplicity4.readthedocs.io/>
- **Mailing List**: <https://lists.nongnu.org/mailman/listinfo/duplicity-talk>
- **Translation Portal**: <https://crowdin.com/project/duplicity>
