If not individual course backups nor automated backups (you say 'buggy and unreliable') then the only alternative left is full site backup - which includes code directory, a DB dump (sql assuming linux here), and an archive of the moodledata directory. One really could do without the code directory IF there were no addons - including themes (one could, of course, re-aquire whatever version needed upon install fresh code. As far as contents of moodledata ... a must is filedir. Most other directories there could be rebuilt by Moodle.
"Best Method" ... always debatable ... if Linux ... could use rsync for all of it ... or bash shell scripts that creates tar.gz archives of code and moodledata (full or minimal) and either the raw MySQL DB files OR, for portability, might be best to stick with mysqldumps. The tar.gz archives then rsync'd.
As far as code directory ... the most significant file is config.php.
And will put more 2 cent thought into the maintenance of moodle code or installation there of by using Git repos for Moodle.
Buggy or not ... think individual course backups still worth doing - which could also be done via CLI scripts in moodlecode/amin/cli/ with either backup.php (run through a loop of course ID's) or automated_backup.php. Those could be cron'd.
'2 cents' ...
'spirit of sharing', Ken