I'm a huge fan of hash functions. They underpin all of cryptography, they allow incremental backups and delta updates, they check for corrupted files, they create randomness, they do all kinds of great stuff.
Anyway, I've had this idea for a while to write my own backup software. Unfortunately, the design requires me to hash every file that's being backed up, and I could not get it to run fast enough.
This will probably take 4 or 5 parts to explain.