You can use crontab to automatically back up your website on to another domain.

To do this your host must allow you:

  • crontab access
  • mysqldump access
  • tar access
  • gzip access
  • ncftpput access

You will probably need to ask them the path to mysqldump, tar and ncftpput.

The following crontab sends a daily copy of your MySQL database to a remote domain. It also takes a weekly backup of your complete website and transfers it to the remote domain.

MAILTO="mail@mydomain.com"
0 0 * * * /usr/local/psa/mysql/bin/mysqldump --opt -u db_user -pdb_pwd db_name | gzip | /usr/local/bin/ncftpput -u ftp_user -p ftp_pwd -c ftp.otherdomain.com target_path
0 0 * * 1 tar cvfz - local_path | /usr/local/bin/ncftpput -u ftp_user -p ftp_pwd -c ftp.otherdomain.net target_path/target_file.tar

  • mail@mydomain.com = email to send error messages to
  • db_user = username to login to your MySQL database
  • db_pwd = password for db_user
  • db_name = MySQL database name
  • ftp_user = FTP username to sign into ftp.otherdomain.com
  • ftp_pwd = password for ftp_user
  • ftp.otherdomain.com = domain to send backup files to
  • target_path = target directory to place database backup in
  • local_path = path to the top level directory of your website that you want to backup (any subdirectories will be recursively backed up)
  • target_path/target_file.tar = filename of backup of all files on your domain

Include a blank line at the end of your crontab file otherwise it will not work. The MAILTO line is also a good idea as any problems will automatically be emailed to you. Make sure you replace the placeholders in the above example!

I'm not going to explain the 0 0 * * * bit as there are plenty of articles kicking around that cover it better than I could. This is a good example

Good luck!