One of the hazards of working with multiple computers is keeping data synchronized between them. I know I should keep Joey’s advice about Keeping Your Life in Subversion, but configuration files aren’t they only offenders.

For example, my personal web site is completely static. I generally update only a single YAML file when I need to make a change, then run a short script to rebuild the affected pages and update them on my server. scp is great for transferring files once in a while, but there’s a better option for frequent updates: rsync.

I’m also slowly migrating users off of a machine being decommissioned to a new machine, and there’s an hourly cron job which uses rsync to copy all of their files between the machines. Because rsync transfers only the differences between the files, it’s efficient on network bandwidth (even if it still must perform a lot of file IO to traverse their directory trees). It’s a program I could have written myself, very badly, but I don’t have to, thanks to the Samba hackers. Best yet, I’m not even sure all of the places I have it running as part of scripts or projects; it just does its job and stays out of the way (at least once you skim the man page for the correct option… my one gripe is that I never use it manually often enough to remember exactly every flag I need in certain situations.)

Thanks to everyone who’s contributed to the project for making this useful tool.