.. include:: global.rst.inc .. _backy2: 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