| What:| Baccus|
| Where:| http://www.magma.com.ni/repos/baccus/ <
> (link broken 2013-09-02)|
| Description:| Baccus - Trivial Use File Backup and Restore Snapshot a file system (directory) as often as you like and at any time retrieve any of the snapshots. Baccus uses content addressable storage on the local filesystem for filesystem archival. For more info see: http://www.magma.com.ni/repos/baccus/README|
|| Currently at version 0.1|
|| Note: this is pre-alpha development quality, if it breaks you have to keep the parts (tm).|
| Updated:| 05/2013|
| Contact:| See [LEG] and the website|
----
***Bits and Pieces:***
****astra, fp, atexit and tie_sqlite3****
This one is easy.
''astra'': `set*`, `incr*`, `assign*`, `puts*`, `gets*`, `close*` etc.
do almost the same as `set`, `incr`, `assign`, `puts`, `gets`, ``close`` - however
they allow an arbitrary number of arguments, sometimes for benefit and
sometimes yielding confusion.
assign* 5 a b c
incr a 1 b 2 c 3
is cool to write, though. It yields `a` = 6, `b` = 7, `c` = 8.
Here you can get ''astra'': http://magma.com.ni/repos/astra
''fp'': a collection of [functional programming] idioms like `map`, `filter`,
`iota`, or `K*`, `S`, `I`, as well as playing Lisp as of `cond` or prefix
math operators for pre 8.6 Tcl. Mostly stolen from this wiki.
The use of ''fp'' like that of 'astra' also has the effect of only sometimes
shed light on a program, but most times its shadows :)
Here you can get ''fp'': http://magma.com.ni/repos/fp
''atexit'': is [AtExit handlers] put together into a package.
For ''tie_sqlite3''': see [Sqlite3 Data Source for Tie]
****brisa****
Baccus needs a fast hash function. Currently I use sha1, because it is in Trf
and easily installable, however initially I wanted to use Daniel Bernsteins
http://cr.yp.to/snuffle.html%|%Salsa20 algorithm%|%.
The Salsa20 core allows to hash and encrypt a piece of data in one run. This
is implemented as ''Brisa'' in the Baccus package.
The snuffle package uses [Critcl] and contains probably the worst Tcl embedded
C code you have ever seen. It does probably not work anymore with the newer
Critcl 3.1. Anyway:
Here you can get the Salsa20 implementation as ''snuffle'': http://magma.com.ni/repos/snuffle
****urta and afis****
Urta stands for http://richardhartersworld.com/cri/2007/urtree.html%|%unordered radix tree%|% archive.
Files are stored as hashed blocks in the archive. With the unordered radix tree index, block
are found again very fast, even with a huge amount of blocks.
Afis stands for Archival file storage. Afis arranges for a whole directory tree to be traversed
hashed and stored into an Urta. Apart from the file data, Afis also packs metadata into
the Urta.
***Some History:***
May 2013: tried other things and got back to Baccus again. Since installation
was anything less then smooth, fixed some minor problems. urta persistent
parameter store using [Tie] with `file` data source does not work out, because
the file grows Megas with one large run. So decided to implement
[Sqlite3 Data Source for Tie]. Another critical bug: files with non-ASCII
characters in their name do not get backed up - going to fix that in the
next days. Will bump version to 0.2 then.
----
March 2009: After some three or four months of working out the basics of Baccus I dare
to expose this baby to the rough world. It still stands on very wiggly feed
so please take it up with care, and only when you know what you are doing.
I plan to use Baccus as a professional backup solution for a small webhosting
company as well as for the personal computers in my family environment, so it
surely will evolve over time. This release shall encourage other developers
to take a look and try it out, and if it pleases to contribute bug reports,
patches, ideas, or nice comments.
Baccus is hosted in a [http://darcs.net/ %|%darcs%|%] repository at:
http://www.magma.com.ni/repos/, together with bits and pieces required to
install and use it.
<> Application | System Administration | (L)GPL Licensed