BackupBuddy is an excellent WordPress plugin for taking partial and/or full, manual and/or automatic scheduled backups with a ton of options. I recorded a video in which I show how I migrate a copy of a WordPress site running on my localhost to a sub directory of my HostGator shared hosting account in less than 10 minutes (not counting the time it took for the backup to get uploaded on my slower internet connection). And we can do this right from within the source website without doing tasks like opening cPanel, creating the database, going to file manager, using a FTP client.
Check it out below:
a) In BackupBuddy settings, set all tables to be backed up
b) Ensure that destination location does not contain a WordPress installation
c) Ensure that there is no .htaccess at the destination. If it is present, rename it to something like .htaccess-original
If your WordPress site is not hosted on a awesome hosting company like WP Engine that provides automated daily backups and manual 1-click backup option, you have no excuse to not use BackupBuddy. Highly recommended.