distraction in action
Note: Since everybody is linking to this page as the canonical Backup Bouncer document, I should point out that the project page with the latest version is located here, and the source code and issue tracker are located here. Also, the Backup Bouncer category of the blog has all the posts related to BB.
Do you back up your files? Of course you do! (Right? Right???) But do your backups work? Really? Are you sure? Have you checked?
Doing backups in OS X has always been a bit nerve-wracking. We’ve got resource forks, Finder flags, and various other odd metadata that don’t exist on other platforms. With the advent of Tiger, Apple told us that cp, tar, and rsync would finally be aware of our metadata and preserve it properly. And there was much rejoicing.
But then someone (or something?) named maurits actually tested these tools (and quite a few others), and the results weren’t pretty. This was a valuable wake-up call for many in the Mac community, but maurits never got around to releasing his test suite so we could do our own testing. Backup Bouncer is here to remedy this omission.
Backup Bouncer’s job is to keep the ugly backup tools out of the club. It’s here to show you exactly how bad (or, dare I say it, good?) your backup tools are. The way you use it is simple. First you create a couple of volumes:
bbouncer create-vol Src bbouncer create-vol Dst
Next you create the test files on the source volume:
Now you use any old method you want to copy the files from
Next you can expand the scope to “important” properties — properties that power-users may find important or may be critical in the future:
Finally, you can see how the tool fares on the entire test suite:
As an example of how the results look, here are the results for
Verifying: basic-permissions ... ok Verifying: timestamps ... Sub-test: modification time ... ok ok Verifying: symlinks ... ok Verifying: symlink-ownership ... FAIL Verifying: hardlinks ... ok Verifying: resource-forks ... ok Verifying: finder-flags ... ok Verifying: finder-locks ... FAIL Verifying: creation-date ... FAIL Verifying: bsd-flags ... FAIL Verifying: extended-attrs ... Sub-test: on files ... FAIL Sub-test: on directories ... FAIL Sub-test: on symlinks ... FAIL FAIL Verifying: access-control-lists ... Sub-test: on files ... FAIL Sub-test: on dirs ... FAIL ok Verifying: fifo ... FAIL Verifying: devices ... ok Verifying: combo-tests ... Sub-test: xattrs + rsrc forks ... FAIL Sub-test: lots of metadata ... FAIL FAIL
Pretty bad, eh? On a more optimistic note, here are the results from Shirt Pocket Software’s SuperDuper!, one of the only tools to even come close to passing all tests:
Verifying: basic-permissions ... ok Verifying: timestamps ... Sub-test: modification time ... ok ok Verifying: symlinks ... ok Verifying: symlink-ownership ... ok Verifying: hardlinks ... ok Verifying: resource-forks ... ok Verifying: finder-flags ... ok Verifying: finder-locks ... ok Verifying: creation-date ... ok Verifying: bsd-flags ... ok Verifying: extended-attrs ... Sub-test: on files ... ok Sub-test: on directories ... ok Sub-test: on symlinks ... ok ok Verifying: access-control-lists ... Sub-test: on files ... ok Sub-test: on dirs ... ok ok Verifying: fifo ... FAIL Verifying: devices ... FAIL Verifying: combo-tests ... Sub-test: xattrs + rsrc forks ... ok Sub-test: lots of metadata ... ok ok
Backup Bouncer also has a built-in set of “copiers”, to automate testing of command-line tools like cp, rsync, tar, asr, pax, ditto, and so on. You can run these tests using the “bbouncer copy” command:
You’ll get several pages of output, so I won’t show it all here. Finally, I’ve included an
You can get Backup Bouncer here.
Update: My ACL tests were broken. I’ve updated the output shown here to reflect the corrected tests.