I have just released version 1.7 of Obnam, my backup program.

Version 1.7, released 2014-03-15

WARNING: This release has had fairly large parts of the internals re-written. There shouldn’t be any externally visible changes due to that, but there is a chance of bugs. Be careful. Make a copy of your backup repository before upgrading, if you can.

  • The convert5to6 subcommand has been removed. If you need to convert from a pre-1.0 backup repository, and haven’t done so yet, please use Obnam version 1.6.1 or earlier to do so.

  • A new backup-finished hook is provided by the backup plugin, so that other plugins may do processing at the end of a backup, such as report the successful backup to a monitoring system. Patch by Enrico Tröger.

  • The FUSE plugin can now refresh its view, by having the user read the .pid file. Patch by Valery Yundin.

  • New option --always-restore-setuid to always restore setuid/setgid flags in permissions, even if the restore is not being run by root or the owner of the files (as recorded in the backup).

  • New option --exclude-from allows exclusion patterns to be given in a separate file (one per line), instead of in a configuration file or on the command line. Patch by Enrico Tröger.

  • A start of a manual for Obnam. This will gain more content with new releases. The current versions is mainly an edited version of Lars’s blog posts about backups, plus the Obnam tutorial from the Obnam homepage. See http://code.liw.fi/obnam/manual/ for rendered versions (PDF, HTML).

  • Most of the error messages Obnam produces now have a unique error code: ERROR: R0B15DX: Cannot find requested generation for client havelock for example. More error messages will gain error codes in future releases. The error codes are meant to be easy to search for, and will allow error messages to be translated in the future.

  • The obnam-benchmark program got rewritten so that it’ll do something useful, but at the same time, it is no longer useful as a general tool. It is now expected to be run from the Obnam source tree (a cloned git repository), and isn’t installed anymore.

  • The log file now includes information about the transfer overhead to the repository. Overhead is all the bytes that are not file content data: filenames, permission bits, extended attributes, etc, plus Obnam internal bookkeeping.

  • obnam verify now shows progress both based on number of files and amount of data.

Bug fixes:

  • Obnam now doesn’t remove chunks that are shared between clients. Previously, this would sometimes happen, because only the first client would correctly record itself as using a chunk. Now all clients do that.

  • Obnam now creates a trustdb.gpg in the temporary GNUPGHOME it uses during encryption operations. From version 2.0.22 (or thereabouts), gpg insists on having a trustdb.gpg in the GNUPGHOME it uses.

  • When backing up a large file, and making a checkpoint generation in the middle of it, Obnam would say “continuing backup” after the checkpoint was finished, instead of saying the name of the file. This is now fixed.

Internal changes:

  • The obnamlib.Error exception class has been replaced by the obnamlib.ObnamError class, which derives from the new obnamlib.StructuredError class. All new exceptions will need to be derived from obnamlib.Error in the future. Also, due to the way StructuredError works, it is now necessary to create a new exception class for each kind of error. This gives us unique the error codes mentioned above.

  • The old obnamlib.Repository class is gone, and replaced with the obnamlib.RepositoryInterface class, which gets implemented for each repository format (there is only one, for now, but there will be more).