I've been working on an archiver that is intended to combine, in my opinion, some of the best features of borg and restic.
The functionality is currently split into a library for interacting with archives, libasuran, and a CLI binary for using them, asuran.
This archiver does deduplication, encryption, compression, data verification, and (ideally) supports backing up to untrusted storage, including cloud storage (though currently it only supports a local storage backend).
It is still in very early stages of development, and barely has a working binary, but I'm sharing it in case there is interest and to try and get some constructive feedback.
Short term roadmap:
- Fully implement the repository specification on the project website, tentatively stabilizing the on disk format
- Implementing proper sparse file support
- Implementing, at a bare minimum, an SFTP backend
- Import and export tars and other archive formats to/from the repository in an intelligent way (i.e. opening the archives and storing their component files directly)
- Multithreading of store and retrieve operations
Medium term roadmap:
- Opt in delta compression of chunks that are not themselves duplicates, but are adjacent to duplicates
- Cloud storage backends
- Repository compaction (currently version only supports append-only)
- Auto compression (perform test compression on the first part of a file and only compress it if the test results in a reasonable compression ratio)
- Support for data specific slicers (i.e. slicing a disk image by filesystem allocation unit rather than in a content defined manner)
Long term roadmap:
- Server/client mode for better remote storage peformance
- GUI/WebUI front end
Current major limitations:
- In flux on disk format, does not implement the spec properly
- CLI utility is currently dumb as a box of rocks and can't access most of the features of libasuran
Please take a look at the readme and internals documents to get a better idea of what asuran does and how it does it, though please do note that the Internals document is more of a specification than a description of how the current version works.
You can find the gitlab repository for libasuran here, and the one for asuran here