There are several ways of doing this. You can certainly backup and restore DB and aspects of the file system if applicable (media files for example). This method is good if the variance between dev and prod is large or you don't want to worry about being selective.
Another method to keep in mind is content staging which you can use to promote content and object changes throughout your build pipeline (dev, QA, stage, prod). You can also hook this up bi-directionally to get content updates moving from prod to dev.
Feature import and export is also a possibility for object updates.