To backup, use tar & mysqldump commands. These are Open standards, so accepted everywhere & having no bug.
Backup files with tar command:
$ tar -cvzf /path/to/storage/backup.tar /path/to/wordpress/installation
To restore files, simply untar it. An example:
$ tar -C /path/to/wordpress/installation -xvzf /path/to/storage/backup.tar
Backup database with MySQLdump command:
$ mysqldump --opt -u [uname] -p[password] [dbname] > [backupfile.sql]
To restore database, simply execute sql dump file by mysql command. An example:
$ mysql -u [uname] -p[password] [db_to_restore] < [backupfile.sql]
Make sure there's no space between -p & password. It will work no matter how large your database is (phpMyAdmin can't be used to backup & restore large databases). MySQLdump is somewhat slower than other raw methods, but its bug-free & effective.
To do automation, use these commands as cron jobs' command.