I used to use a plugin for ExpressionEngine called "Backup Pro" (http://devot-ee.com/add-ons/backup-pro) that would allow me to backup the entire file system and database to an offsite location like Rackspace or Amazon S3.

Is this functionality built into Craft anywhere or does a similar plugin exist?


You're in luck... Backup Pro for Craft was released just this week:



It's not built natively into Craft. Craft will either write the backup to craft/storage/runtime/backups or send it to the browser if you check "Download Backup" from the backup tool under Settings in the Control Panel.

I'm not aware of a plugin that exists that currently does this, but it could relatively easily be done by extending Craft-Dump, which lets you trigger a Craft backup via a URL/cron job and then writing the logic that does the move to S3.

  • That's just a database backup though, right? I'm not seeing where I can backup the entire file system. I'm guessing I cannot? – Allen Pieper Jul 16 '14 at 18:52
  • Ahh yeah, missed that part. The tricky part about doing that is that on some sites with gigs of images/assets, etc. you'll quickly run into PHP memory/timeout limits. – Brad Bell Jul 16 '14 at 18:55

I've not come across a plugin that does this, but there are existing tools you can use to achieve the same sort of thing.

Using Git and a private repo to store your template files and resources (CSS, JS). If you wanted to, you could also deploy these files to S3 pretty easily.

Using S3 or Rackspace within Craft to store your site's assets. This is a feature of Craft Pro, but allows you to skip the step of transferring files from a local source to S3. You can also take advantage of other AWS services like Cloudfront with this installed.

Task runners like Grunt or Gulp can also be configured to watch for new assets, template files and resources, and deploy them straight to S3. In theory, you could do the same with your database using the MYSQL dump package for Grunt, then watch for new files and sync. Or simply run a back-up task for your sites at the end of the day. This is highly configurable, but would require some work on your part to ensure it's running as expected.


I personally have a cron set up to rsync my site to another server that is my standby server. If something happens it is ready to be swapped in. Using Amazon Mysql is great, they do all of the backups for you as part of their service. If you did not want to use Amazon Mysql, they you can add a mysqldump to your shell script and push the resulting dump file to to the remote server as well.

I think Git is a great idea as well.

  • I know this question is older, but I was wondering if you could explain how you do this... I'm currently trying to make this work. – misteroptimist Mar 31 '15 at 20:52

Try this.

Install this on your server http://s3tools.org/s3cmd

Then create a bash script to

  • mysqldump your database
  • place the mysqldump in your directory path. I place mine in /var/www/site/backups/mysql/yyyy-mm-dd/mysql.sql format. My folder structure looks like this

    /var/www/site/public /var/www/site/craft /var/www/site/backups

Once you complete your mysqldump, simply tar.gz the entire /var/www/site folder and copy it to Amazon s3 with s3cmd utility that you installed earlier.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.