I am proud to announce that I have pushed Asuran version 0.1.0 to crates.io!
What is Asuran
Asuran is a new deduplicating archiver format focused on performance and no-compromises security for backing up to untrusted storage, and has been written from the ground up to enable the use of cutting edge technologies, and extract every last ounce of performance out of modern hardware.
What this means
In a practical sense, this release mostly signifies that the core API has settled down enough that I am no longer scared of adding new, more complicated, (and more powerful) features.
That doesn't mean asuran is completely useless though, it already has many of the core features you would come to expect from an archiver. It is actually functional, and can make and restore archives. It even has several knobs for you to tweak!
Not a stability promise
While I will try to avoid changes that break backwards compatibility, and will likely entirely avoid changes that break the ability to read existing repos until at least 0.2.0, there are currently no promises about breaking API changes. I will try to keep these to a minium, but asuran is still experimental software.
On that note, please do not use this as an excuse to rely solely on asuran. It will eat your laundry if you do so.
Testing
Asuran is currently continuously tested on 64bit linux, macos, and windows. All of these are first class support targets, and any test failures on any of them will hold up a release.
Test coverage is decent at the moment but not great. I would like to get automated fuzz testing setup for at least linux in the very near future.
What asuran can do right now
Asuran can create, store, list, and extract archives from within a repository on the local filesystem, with a few other niceties.
Take a look at the output of asuran-cli --help
:
Asuran-CLI 0.1.0-6405ca0 2020-04-23
Nathan McCarty <nathan@mccarty.io>
Indicates which subcommand the user has chosen
USAGE:
asuran-cli [FLAGS] <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-q, --quiet Squelch non-logging operations
-V, --version Prints version information
SUBCOMMANDS:
bench-crypto Runs benchmarks on all combinations of asuran's supported crypto primitives
contents Lists the contents of an archive, with optional glob filters
extract Extracts an archive from a repository
help Prints this message or the help of the given subcommand(s)
list Provides a listing of the archives in a repository
new Creates a new repository
store Creates a new archive in a repository
Road Ahead
Now that I am confident the core repository API isnt going to be changing much, its time to work on the more exciting features.
First in line is the S3 and SFTP backends, which I have begun working on it in earnest. Following that will likely be the ability to push/pull archives between repositories.
Another important step I will be taking in the near future will be to provide hostname/machineid based caching of the last times files were modified, so that reprocessing of files can be avoided when possible.
Call for Participation
If you are interested in participating, please do!
In particular, I could use help with S3, even if its just ideas for how to handle the client side caching of objects.
Take a look at our CONTRIBUTING.md an issue, or join our matrix chat.