All Projects → darrenldl → blockyarchive

darrenldl / blockyarchive

Licence: MIT license
Blocky archive - multithreaded archiver offering bit rot protection and sector level recoverability

Programming Languages

rust
11053 projects
shell
77523 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to blockyarchive

BlockHashLoc
Recover files using lists of blocks hashes, bypassing the File System entirely
Stars: ✭ 45 (-48.86%)
Mutual labels:  recovery, sbx, seqbox
Burry.sh
Cloud Native Infrastructure BackUp & RecoveRY
Stars: ✭ 260 (+195.45%)
Mutual labels:  backup, recovery
kirby-backup-widget
Kirby panel widget to easily backup your site content.
Stars: ✭ 25 (-71.59%)
Mutual labels:  backup, archive
laravel-mail-export
A simple mailable trait and interface to export mails to a storage disk once being sent.
Stars: ✭ 82 (-6.82%)
Mutual labels:  backup, archive
schifra
C++ Reed Solomon Error Correcting Library https://www.schifra.com
Stars: ✭ 28 (-68.18%)
Mutual labels:  reed-solomon, fec
Udpspeeder
A Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction, possible for All Traffics(TCP/UDP/ICMP)
Stars: ✭ 3,699 (+4103.41%)
Mutual labels:  reed-solomon, fec
Pg probackup
Backup and recovery manager for PostgreSQL
Stars: ✭ 383 (+335.23%)
Mutual labels:  backup, recovery
Pitrery
PostgreSQL Point In Time Recovery made easy
Stars: ✭ 99 (+12.5%)
Mutual labels:  backup, recovery
Bareos Webui
Bareos Web User Interface
Stars: ✭ 78 (-11.36%)
Mutual labels:  backup, recovery
Barman
Barman - Backup and Recovery Manager for PostgreSQL
Stars: ✭ 1,044 (+1086.36%)
Mutual labels:  backup, recovery
go-erasure
Erasure coding (Reed–Solomon coding) in Go
Stars: ✭ 44 (-50%)
Mutual labels:  reed-solomon, reedsolomon
Dmarchiver
A tool to archive the direct messages, images and videos from your private conversations on Twitter
Stars: ✭ 204 (+131.82%)
Mutual labels:  backup, archive
ParPar
High performance PAR2 create client for NodeJS
Stars: ✭ 110 (+25%)
Mutual labels:  reed-solomon, reedsolomon
Tinyfecvpn
A VPN Designed for Lossy Links, with Build-in Forward Error Correction(FEC) Support. Improves your Network Quality on a High-latency Lossy Link.
Stars: ✭ 1,842 (+1993.18%)
Mutual labels:  reed-solomon, fec
btrfscue
Recover files from damaged BTRFS filesystems
Stars: ✭ 28 (-68.18%)
Mutual labels:  recovery, data-recovery
Wal E
Continuous Archiving for Postgres
Stars: ✭ 3,313 (+3664.77%)
Mutual labels:  backup, recovery
Terraform
Share Terraform best practices and custom modules with the community
Stars: ✭ 39 (-55.68%)
Mutual labels:  backup, recovery
Walrus
🔥 Fast, Secure and Reliable System Backup, Set up in Minutes.
Stars: ✭ 197 (+123.86%)
Mutual labels:  backup, recovery
Backup And Recovery Howtos
Guides to setting up a media storage system, backing it up, and recovering from failures
Stars: ✭ 235 (+167.05%)
Mutual labels:  backup, recovery
goodrexport
Goodreads data export
Stars: ✭ 16 (-81.82%)
Mutual labels:  backup

blockyarchive

Build Status codecov Crates dependency status Gitter chat

Documentation

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.

Demo

asciicast

How does it work?

blkar encodes your data into SeqBox and EC-SeqBox archives. Both formats facilitate data recovery, but only EC-SeqBox provides data repair capability.

What are SeqBox and EC-SeqBox?

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.

Features overall

  • Data recovery that does not depend on file system metadata (sector level recovery)
    • This allows data recovery even when data is fragmented and out of order
  • Supports error correction (via Reed-Solomon erasure code) for EC-SeqBox
  • Supports burst (sector) error resistance for EC-SeqBox
    • This is done via an interleaving block arrangement scheme. It is mainly to address the data repair limitation of the simple archive design.
    • More complex archive designs such as PAR2 can repair burst errors without any extra arrangement scheme, but they are also vastly more complex than EC-SeqBox
  • Multithreaded
    • A lot of operations involved in everyday workflow are written to take advantage of multi-core CPU to provide high performance
  • JSON mode
    • Outputs information in JSON format instead of human readable text, allowing easy integration with scripts

Limitations

  • Only a single file is supported for encoding as SeqBox and EC-SeqBox are both single-file archive formats
    • However, blkar may still be usable when you have multiple files, as blkar supports taking input from stdin during encoding, and also supports outputting to stdout during decoding
    • This means if you have an archiver that supports bundling and unbundling on the fly with pipes, like tar, you can combine the use of the archiver and blkar into one encoding and decoding step

Getting started

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.

Goals and status

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.

Links

Comparison to the original SeqBox implementation/design

Changelog

SBX format (EC-SeqBox is also specified in this document)

blkar specs

Contributions

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.

Acknowledgement

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.

Donation

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.

License

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

  • tests/SeqBox/*

All remaining files are distributed under the MIT license as stated in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].