---- What: Baccus Where: http://www.magma.com.ni/repos/baccus/ 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