For Backy² Users — Benji Backup 0.1.0+dirty documentation

# For Backy² Users

There is no direct migration path from backy² to Benji. If you want to migrate to Benji you’d have to start with a new installation.

The concepts and most of the command names and options stayed the same so Benji should feel familiar to backy² users. If you currently have any scripts deployed together with backy² they should require only a few changes to work with Benji. But if your scripts check for specific exit codes from backy² you’d have to adapt those because they have all changed with Benji. Also if you used backy²’s machine readable output, there’d be changes required as Benji uses JSON instead of CSV.

Here’s a list of the new features that differentiate Benji from backy²:

- Encryption support (AES-256, GCM mode)
- Compression support (zstandard)
- Automatic metadata export to data backend for backup purposes
- Support for Backblaze’s B2 Cloud Storage as a storage backend
- Support for multiple storage backends
- Variable block size for efficient support of LVM and Ceph in one installation of Benji
- More compact metadata storage, the database backend now uses significantly less disk space
- Database based locking to make it possible to have multiple instances on different hosts or in different containers
- New scrubbing mode based on metadata, object existence and length
- Randomly sampled batch scrubbing of versions
- Simple yet flexible retention policy enforcement
- Migration from boto to boto3 with better compatibility for other S3 implementations (Google Storage for example)
- Kubernetes integration with a Helm chart
- blake2b with 32 byte digest as default hash function
- Optional read caching of blocks
- Configuration file format changed to YAML
- Machine readable output is JSON instead of CSV
- More commands support machine readable output
- Import/export format is JSON instead of CSV
- Replacement of the original tags with labels (key-value pairs)
- Flexible filter specification for listings, scrubs and other operations

There also have been quite a few changes under the hood:

- Migration from classic threads and queues to concurrent.futures
- Use Ceph provided Python bindings
- Some refactoring and rewriting to share more code
- Update to database transaction handling
- Update to exit code handling, exit codes have changed
- SQLAlchemy based database backend is the only supported backend now
- Configuration file validation