Testing a backup: a restore drill on a test subdomain, step by step

A copy that was never restored is a hope, not a backup. The real test is putting it back on a test subdomain, next to the real site, and seeing whether it works. It takes an afternoon, once a year and before any big change, and tells you two things: whether the copy is good and how long restoring takes, which is the number you would be missing on the bad day.

First, the two-minute checks

Check How What it proves
The archive opens In a terminal: tar -tzf file.tar.gz lists the contents and fails if it is damaged. That the file is not truncated.
The database copy opens For a compressed file: gzip -t db.sql.gz. Open the SQL and see if it ends with a “Dump completed” line. That the export reached the end.
The size makes sense Compare it with the previous copy. That half a folder was not lost, nor the database empty.

These do not replace the full drill: they only say the file is not broken, not that the site comes back.

The full drill

1 Create the test subdomain (for example test.yourdomain.tld): adding another domain or a subdomain.
2 Copy the files from the backup into that subdomain’s folder.
3 Create a new, empty database with its own user (creating the user and the privileges), and import the backup’s SQL (importing with phpMyAdmin).
4 Point the configuration file at the test database. This is the critical step: if the test site stays connected to the real database, it is no longer a test (a test site before touching what is live).
5 On WordPress, force the test address, or the site jumps to the real address, because the database stores the old one. In wp-config.php, add two lines with the test address:define('WP_HOME', 'https://test.yourdomain.tld');
define('WP_SITEURL', 'https://test.yourdomain.tld');
6 Keep search engines and sending out. Put a directory password on it or use the do-not-index option, and switch off anything that charges or e-mails customers.
7 Go through the list below and write down the result and the date.
8 Delete the subdomain and the scratch database. They hold real data and nobody updates them.

What to check

Check Passed?
The home page and an inner page open, with images and style. If images are missing, the uploads folder did not come in the copy.
An old post or product is there. Compare with the real site.
The number of posts, orders or users matches the real site. If it is much lower, the database is older than you thought.
You can sign in to the dashboard. Proves the users table came across whole.
The contact form works (with real sending switched off). Shows the site’s e-mail is still wired up.
How long it took from start to finish. It is your honest estimate for a real restore.
Never import the copy into the real database just to test. It replaces the live data. The test is always done on a separate database.
Note the date and the result in a separate file. Months from now, knowing the last drill went well on a given date and took so long beats memory. And rehearse a copy that you made too, not only JetBackup’s (restoring a backup yourself).

The drill failed, or the copy you have will not restore? Send us the domain and what appeared.

Open a support ticket

SEE ALSO

Making and keeping your own backup, and testing that it works

A test site before touching what is live

Importing a database with phpMyAdmin, and the size limit that stops you

The 3-2-1 backup rule for a website

RECOMMENDED PRODUCT

Web hosting with cPanel

Domain and SSL included, daily backups and the panel you already know. from $5.36/mo (3-year plan, with coupon)

See plans
  • 0 Users Found This Useful
Was this answer helpful?