v0.4.0
What's changed
Changes
- Experimental TUI: Introduced a modular Terminal User Interface for interactive repository management. Includes a dashboard, snapshot creation, restoration, and retention management.
Experimental: may be removed or replaced in a future release. - Bundle command: New
bundlecommand to create and restore standalone.mapachebundle files with full deduplication and encryption. - FUSE Bundle Mount: Mount
.mapachebundles as read-only filesystems via themountcommand. - TOML Config File: Added support for a
.tomlconfiguration file to centralize repository settings and runtime defaults. - Enhanced Retention Rules: Added
--host(multiple),--keep-hourly, and--keep-minflags to the forget command for more granular snapshot retention control. - Memory-Efficient Restore: Blobs are now written immediately after decoding, reducing peak memory from O(all blobs in segment) to O(1 blob). Cuts restore memory usage without sacrificing parallelism.
- Robust S3 Backend: Implemented multipart uploads for files >= 128 MiB and recursive listing to avoid hundreds of directory requests during garbage collection.
- Improved GC Efficiency: Stream snapshots instead of loading all into memory upfront and process repack chunks in parallel with pipelining.
- Memory-Efficient Verification: Refactored verification to use a streaming approach, capping memory usage for large packs.
- Enhanced Atomic Locks: Added better metadata and robust stale lock detection with detailed conflict reporting.
- Hardlink Restoration: Restorer now detects and recreates hardlinks from snapshots, preserving inode sharing and nlink counts on Unix.
- Access Time Preservation: Added
--with-atimeflag tosnapshotto optionally store and restore file access times. atime is not stored by default to avoid unnecessary metadata growth. On Linux,O_NOATIMEis used when reading files to prevent the backup process from modifying access times. - Key export: Added
key exportsubcommand to extract a key file from the repository and save it locally.
Full Changelog: v0.3.0...v0.4.0