I'm running a Linux server where incremental backups (ideally daily) are required. I want things to remain fast, but for the backups to be reliable.
I'll be using Apache and a MySQL database, what's a good solution?
For most of your files, rsync will do the job very nicely, however for the database, you will probably need something more specialised (or create a db dump file which can be rsync'd to the backup and then imported in to the backup db).
Set up password-less ssh between the 2 servers (by exchanging ssh keys) and then you can use a command like this to copy the files (run on the 'master' server):
This will copy the entire directory tree /path/to/backup to the same path on hostname backup-server. The rsync options are -a (archive mode) preserve user/owner/permissions for each file, and -z to compress files before transferring them and decompress them on the receiving end automatically. The --delete flag deletes files which are on the backup server but no longer on the master server.
Use cron to start this command when required.
All this assumes that the 2 servers are running Unix/Linux.
Without getting some expensive, complicated software. You could just set up a cron-job to run an RSYNC task once a day. (That, of course assumes you're running UNIX/Linux. If you're running Windows I'm not sure)
RSYNC has the advantage of only transferring new files or files that have changed. You can even specify RSYNC to delete stuff on the backup server no longer present on the main server.
You don't tell anything about the platform, the database used or whatever.
Nevertheless, at least for the file part, I would have a look into rsync, which works very well for large file trees.