Crates.io | blkar |
lib.rs | blkar |
version | 7.2.7 |
source | src |
created_at | 2018-12-19 10:31:16.327555 |
updated_at | 2019-11-06 06:04:22.939751 |
description | Multithreaded archiver offering bit rot protection and sector level recoverability |
homepage | https://github.com/darrenldl/blockyarchive |
repository | https://github.com/darrenldl/blockyarchive |
max_upload_size | |
id | 102702 |
size | 842,690 |
Blockyarchive/blkar (pronounced "bloc-kar") is a multithreaded archiver written in Rust that offers bit rot protection, and makes it easier to recover archived data from failing storage devices.
blkar encodes your data into SeqBox and EC-SeqBox archives. Both formats facilitate data recovery, but only EC-SeqBox provides data repair capability.
SeqBox is a single-file archive format designed by Marco Pontello that facilitates sector level data recovery for when file system metadata is corrupted/missing, while the archive itself still exists as a normal file on file system. Please visit the official SeqBox repo for the original implementation and technical details on this.
Error-correcting SeqBox (or EC-SeqBox for short) is an extended version of SeqBox developed by Darren Ldl for this project, introducing forward error correction via Reed-Solomon erasure code.
Blockyarchive/blkar was formerly known as rust-SeqBox/rsbx prior to renaming.
Installation
blkar is available via AUR, GitHub releases or cargo
cargo install blkar
Usage guides & screencasts & other resources
The wiki contains comprehensive guides and resources.
As blkar is to be used largely as a backup utility, security/robustness of the code will be prioritised over apparent performance.
This project has reached its intended feature completeness, so no active development for new features will occur. However, this project is still actively looked after, i.e. I will respond to PRs, issues, and emails, will consider feature requests, respond to bug reports quickly, and so on.
In other words, this is a completed project with respect to its original scope, but it is not abandoned.
Comparison to the original SeqBox implementation/design
SBX format (EC-SeqBox is also specified in this document)
Contributions are welcome. Note that by submitting contributions, you agree to license your work under the same license used by this project as stated in the LICENSE file.
I would like to thank Marco (the official SeqBox author) for discussing and clarifying aspects of his project, and also providing of test data during development of osbx. I would also like to thank him for his feedback on the numbering of the error correction enabled ECSBX versions (versions 17, 18, 19).
I would like to thank Ming for his feedback on the documentation, UX design, and several other general aspects of the osbx project, of which most of the designs are carried over to blkar, and also his further feedback on this project as well.
The design of the readable rate in progress report text is copied from Arch Linux pacman's progress bar design.
The design of block set interleaving arrangement in RS enabled versions is heavily inspired by Thanassis Tsiodras's design of RockFAT. The interleaving provides resistance against burst sector errors.
Note: Donation will NOT fuel development of new features. As mentioned above, this project is meant to be stable, well tested and well maintained, but normally I am not actively adding new features to it.
If blockyarchive has been useful to you, and you would like to donate to me for the development effort, you can donate through here.
Libcrc code
The crcccitt code is translated from the C implementation in libcrc and is under the same MIT License as used by libcrc and as stated in libcrc source code. The license text of the crcccitt.c is copied over to crc-ccitt/build.rs
, crc-ccitt/src/lib.rs
, build.rs
and src/crc_ccitt.rs
as well.
Official SeqBox code
The following files in tests folder copied from official SeqBox are under its license, which is MIT as of time of writing
All remaining files are distributed under the MIT license as stated in the LICENSE file.