What are the best practices to manage site mirrors with Drupal? I have gone through the reading of this Backing up and migrating a site from which i know basically there are two parts to backup - keeping the Drupal folder and the dump of MySql.

I am not really planning to migrate a site, but want to create a development environment separate and then push it to the live site.

Apart from the link above, are there any best practices that are worth doing? What are the problems or pit falls that should i avoid? What tools works best?

Looking at the practical experiences people have been through which is not obvious.

PS: I am planning to host it in a Linux based environment.
It always a big deal with Drupal to have a Staging and Production environment. Because you can't just make a simple mirror.

Because you are going to do Site Building in your Staging area, you can't export the database and import it in production, because of user content generation. The inverse its also a problem, as you have done some Site Building.

Of corse you have some tools like Selinium IDE that helps you to save your configuration and that you can use after in production.

The others solution its to move everything, configuration I mean, into files. You've couples of modules that can helps you. First of all, Features that allow you export configurations as feature and you can enable it easily once on production.

For variable and blocks, you've Strongarm and Boxes. Finally the hook_update_N will help you to archive the last goals.

For the code part of your project, I guess nothing is better than versioning, like Subversion or Git (goes for Git as it's use by drupal.org). And for the workflow model I can just advice this one that works pretty well in our organization.