I used to sync between 3 environments for a customer on a weekly basis, so I would just export the deltas from the tables that changed regularly. In my case, the tables were exp_weblog_titles, exp_weblog_data, and exp_category_posts. I’d run a query like
SELECT * FROM exp_weblog_titles WHERE (edit_date >= '20090604000000');
then export it to an SQL file as INSERT statements, and run those on the databases that needed synching. It’s still a manual process, but at least you don’t have to fudge with the server specific settings each time.
You can also export the data in tables that hold the settings information (like exp_upload_prefs) in case you need to do a full database sync. Just run those inserts after you perform the full database restore; it’s way faster and less tedious than using the web interface to change the settings.
EDIT: It was late last night when I wrote this so a couple things worth mentioning. 20090604000000 would be the date and time you last ran the sync. Also, for entries that already exist and were updated, you’ll need to export those out in a separate SQL file as UPDATE statements.