Sync local dev site to live best practice
Here are some good ideas to use:

1.) Backup and Migrate module.  Before doing any local changes migrate the production database down to your local environment

2.) Features.  Make all your content type into specific features.  Include content types, views, context, and any other thing that can be put into features.  This will allow you to make content type changes and almost ANYTHING on the site and simply roll it as a feature.  When its uploaded to the production environment you simply revert the features, and bam they are there.

3.) Stongarm and Diff are additional modules to use with features.  They allow to see whats different from the site and the feature, and strongarm allows variable exports into features.

3.) GIT or SVN.  Use git or svn to roll to production and keep your code base on track.  With major features differences use a branch to complete work and merge it into the trunk.  This will allow you to development bigger features, but also give you the ability to make bug fixes that can be sent up in a roll.

4.) RSYNC.  Most of the time sites/default/files or CMS uploaded files are not in your repository.  Use rsync to sync the production files to your local.  Or simply use FTP

5.) Use drush up to update your modules it will keep your subversion or git in tact.  It will also attempt to update your database.