I’ve released version 0.24 of Obnam, my backup application.


  • The way file timestamps (modification and access times) have changed, to fix inaccuracies introduced by the old way. Times are now stored as two integers giving full seconds and nanoseconds past the full second, instead of the weird earlier system that was imposed by Python’s use of floating point for the timestamps. This causes the repository format version to be bumped, resulting in a need to start over with an empty repository.
  • Extended file attributes are now backed up from and restored to local filesystems. They are neither backed up, nor restored for live data accessed over SFTP.
  • If the --exclude regular expression is wrong, Obnam now gives an error message and then ignores the regexp, rather than crashing.
  • There is now a compression plugin, enabled with --compress-with=gzip.
  • De-duplication mode can now be chosen by the user: the new --deduplicate setting can be one of never (fast, but uses more space); verify (slow, but handles hash collisions gracefully); and fatalist (fast, but lossy, if there is a hash collision). fatalist is the default mode.
  • Restores now obey the --dry-run option. Thanks to Peter Palfreder for the bug report.
  • New option --verify-randomly allows you to check only a part of the backup, instead of everything.
  • Verify now has some progress reporting.
  • Forget is now much faster.
  • Forget now has progress reporting. It is not fast enough to do without, sorry.
  • Backup now removes any checkpoint generations it created during a backup run, if it succeeds without errors.


  • Now works with a repository on sshfs. Thanks to Dafydd Harries for reporting the problem.
  • Now depends on a newer version of the larch library, fixing a problem when the Obnam default node size changes and an existing repository has a different size.
  • User and group names for sftp live data are no longer queried from the local system. Instead, they’re marked as unknown.