Ideally you should be backing up the database once a day and even hourly incremental backups but that gets a little complicated. A quick search brings up this extension for automating creating the backup:
Most FTP clients will have a way to sync folders on the server with your local copy, most also have a way to schedule it. You want to keep some older copies, suppose you accidently wipe out a bunch of posts. If your delete the old backup and then only have copy of the new backup it's pointless for recovery.
The only trouble with this is managing it. If you have root access look at this:
This will generate scheduled backups on the server. For example you can set it to create a backup once a day, they rotated out every 7 days. It will create a weekly backup that gets rotated out every four weeks. It creates a monthly backup that gets rotated out 6 months or never... In other words you have a backup for each of the last 7 days, 1 for each of the last 4 weeks and one for each month.
Using your FTP software you schedule it to sync the folders for the daily and weekly backups, in sync mode it will automatically delete the local backups that no longer exist on the server. For the month, just keep them all.
You can do the same thing with the files on the entire site, you may not need to do it for all files but it's a hell of lot easier to restore a site when you have the entire thing up to date and ready to rock and roll as local copy.
“Results! Why, man, I have gotten a lot of results! I have found several thousand things that won’t work.”
Attributed - Thomas Edison