![]() |
![]() |
|
|
|
|
|
Like my work? Check out HexaLex, my game for iPhone & iPod Touch. It's a crossword game like Scrabble, but played with hexagonal tiles. http://www.hexalex.com 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: bbouncer create /Volumes/Src
Now you use any old method you want to copy the files from bbouncer verify -d -T critical /Volumes/Src /Volumes/Dst
Next you can expand the scope to “important” properties — properties that power-users may find important or may be critical in the future: bbouncer verify -d -T important /Volumes/Src /Volumes/Dst
Finally, you can see how the tool fares on the entire test suite: bbouncer verify -d /Volumes/Src /Volumes/Dst
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 Very nice! 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: bbouncer copy -d /Volumes/Src /Volumes/Dst
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.
|
|
![]() |
![]() |




wow.
I haven’t looked at the code yet, but already from the description I can say: kudos! This is exactly what has been missing all the time. It’s too unfortunate I just haven’t had the time to do this (suffice to say – maurits is not something, but a grad student…). I remember we had a short conversation about a year ago, in which I vagely promised a test suite, but never followed suite. All the better that you’ve taken up the initiative yourself!
Not only have I had tons of (justified) requests to release a test suite over the past year, but also tons of (not less justified) requests to test about every single piece of backup software there is. An impossible task. But now, I hope people take your test suite, apply it to their pet software, and make the success (or failure?) of all the software out there more transparent. I have hope that the state of metatada conservation will improve.
Now, apart from all those more or less esoteric software packages out there, there are two things that would interest me, and probably others as well: does your test suite confirm my findings about the core command-line tools like cp, ditto, rsync, …? Also, how does the new rsync from 10.4.9 do?
Thanks again!