The vision of Baccus is to provide:

backup for the masses.

Baccus traverses a given file system tree, including/excluding files and directories according to given patterns and stores them into a given subdirectory organized as content addressable storage, called urta

Succesive traversals of Baccus using the same urta only store changed or added content. Duplicate files are only stored once, duplicate content is stored only once, given it is found at fixed sized offsets inside the respective files. Each run is registered in a flat file database as a backup snapshot. Any file or directory of a snapshot can be retrieved by the Baccus restore functionality.

The files inside an urta have short plain names, the directories have little depth, so an urta can be stored on very simple minded filesystems. The file sizes by default are restricted to the size of a CD-ROM. Offsite storage of an urta thus should be painless.

Baccus is written in Tcl in pursuit of multiplatform compatibility. It uses some C-coded routines though, which are compiled with Critcl. This dependency can be worked around though.

Baccus is highly experimental software, it just gets the job done for us. We would of course like to see it develop into a multipurpose file storing and sharing tool.

The Code Please

The source code is hosted in our darcs repositories.

Currently you need to assemble the bits by yourself.

History - a little bit of - and Credits

Today, there exist a lot of backup solutions for backups over the network. At some point in time we worked and tested with several of them, but some broke on the amount of data we had and others were not feasable.

Inspired by Plan9’s way of dealing with data storage we perceived our own solution to data backup.

A fundamental discovery for fast indexing and retrieving of data are the unordered radix trees perceived by Richard Harter.