Skip to main content

Backup / Restore & Migrations for Drupal

Please Note:  OTDI Web Hosting now keeps a 14-day daily backup of your hosted Document Root & its associated databases. As a result, this document has been largely deprecated and replaced by following Recover an OTDI Web Hosted Site. These commands though are still valid and have been left here as a reference.  

Backing up your website and then restoring it when something goes wrong is absolutely critical.  Web Hosting only guarantees disaster recovery services but it’s far more likely that a website will be down due to a new module misbehaving, accidental deletion of files, etc.  Drupal’s drush utility makes backing up and restoring sites simple and can also be used to migrate a site from one account to another. (i.e. migrating from a development account to the production one)

You will need SSH access to your website so please request it if you don’t already have it.

Backing Up

This creates a snapshot backup of the website into a file called mysite.tar located in the php-data/ directory of the account.

cd /usr/local/webs/mysite/htdocs/
drush archive-backup --destination=/usr/local/webs/mysite/php-data/mysite.tar

Restoring

This restores a website from a backup.  Note that it will overwrite the current site and any changes you’ve made since the snapshot was taken.

drush archive-restore /usr/local/webs/mysite/php-data/mysite.tar \
  --overwrite \ 
  --destination=/usr/local/webs/mysite/htdocs

Migrating Sites

To migrate a website from one account to another you first make a standard backup as shown above.  Then transfer the file to the other account (in this case it’s placed into the php-data/ directory). You can then execute a restore; however, you will need to update the database credentials to the appropriate values for this account.  drush has built this update directly into the restore command.

drush archive-restore /usr/local/webs/anothersite/php-data/mysite.tar \
  --overwrite \ 
  --destination=/usr/local/webs/anothersite/htdocs \ 
 --db-url=mysql://dbuser:dbpassword@webdb1.service.ohio-state.edu/dbname

Note that dbuser, dbpassword, and dbname are for the destination account and all must exist prior to executing this command (It won’t create any of them).