Before you restore: keep a copy of the broken site
Restore the files first, then the database. In cPanel, open File Manager and extract the backup into public_html, then import the .sql file in phpMyAdmin. You know it worked when the home page loads, wp-admin accepts your login, and Settings, Permalinks saves without an error.
A restore only moves the site back to the date of the backup. Everything written after that date is replaced, including orders and enquiries, so export what you still need from the live site first.
- Download a fresh database dump from phpMyAdmin Export before you touch anything.
- Copy recent uploads or posts you want to keep into a folder outside public_html.
- Note the backup's date and whether it holds files only, the database only, or both.
- On a store with automatic renewals, pause them first. Rolling the database back returns each subscription record to its old state, and the billing plugin can charge a period that was already paid.
If the account has a cPanel backup taken before the fault, start there. If there is no copy at all, take one now and treat the current files as evidence, not as something to delete.
Restore the WordPress files in cPanel
Open cPanel, then Files, then File Manager. Go into public_html and use Settings at the top right to tick Show Hidden Files, so .htaccess appears in the list.
- Upload the backup archive (zip or tar.gz) into public_html with the Upload button.
- Right-click the archive and choose Extract, into public_html. Accept the overwrite prompt.
- Keep the live wp-config.php. A copy from the backup can point WordPress at a database name, user or password that no longer exists.
- Select the restored files and open Permissions: 644 for files, 755 for folders. Not 777.
- Delete the archive from public_html once extraction finishes, so nobody can download it.
This brings back core files, themes, plugins and uploads. Posts, pages, orders and settings still live in the database, which is the next step.
Import the database in phpMyAdmin
In cPanel open Databases, then phpMyAdmin, and select the WordPress database in the left column. The prefix is usually wp_, but confirm it in wp-config.php if the site was set up with a custom one.
- Open the Import tab and choose the .sql or .sql.gz dump.
- Leave the format on SQL and click Import.
- If the dump has DROP TABLE statements it replaces the old tables. If it does not, drop or rename the existing tables first, or the import stops on tables that already exist.
- When the dump is larger than the upload limit, import the .sql.gz, or use cPanel, Backup, Restore a MySQL Database, which reads the file from disk instead of the browser.
- A success message appears and the table list shows the restored rows.
A database-only restore is right when the theme and plugins are unchanged and only content or settings broke. Import over the existing tables; do not create a second database.
Restore from a plugin inside wp-admin
If wp-admin still loads and the backup was made by a plugin, use its own screen. It is faster, and it rewrites the file paths for you.
UpdraftPlus: Settings, UpdraftPlus Backups, Backup/Restore tab, Existing backups, then Restore. Tick the parts you need — database, plugins, themes, uploads, core — confirm, and wait for the success message.
Jetpack VaultPress Backup: open the site dashboard, go to Jetpack, Backup, pick a date, then Restore to this point and Restore now. It runs in the background, can take minutes to hours on a large site, and emails you when it ends.
Both allow partial restores: clear the database box to bring files back without rolling content, or restore only the database when an update broke the admin. The backup plugin comparison covers which plugins keep a restore screen outside the site.
You know it worked when
Run these five checks in order. Stop at the first failure and use the table below.
- The home page loads with no PHP warning and no white screen.
- /wp-admin accepts the login that belonged to the backup, not the newest password.
- Settings, Permalinks, Save Changes returns "Permalink structure updated."
- A recent post and one image from /wp-content/uploads open.
- cPanel, Metrics, Errors shows no new line after you reload the page.
When all five pass, the restore is complete. Change the admin password and update WordPress, themes and plugins before you tell anyone the site is back.
When the restore fails: symptom and fix
Most failed restores come down to six causes, and the message on screen names which one.
| What you see | Likely cause | Fix |
|---|---|---|
| "Restoration did not complete" in UpdraftPlus | Disk full, or the PHP memory or time limit | Read the log in wp-content/updraft, free space, raise memory_limit, then restore one component at a time. |
| 500 error after the files go back | File permissions, or an .htaccess from another server | Set 644 and 755, rename .htaccess to .htaccess.bak, reload. |
| "No input file specified" or a blank page | Wrong document root, or wp-config pointing at the wrong database | Confirm public_html is the document root, then check DB_NAME, DB_USER and DB_PASSWORD. |
| Redirects to the old domain or a staging URL | siteurl and home still hold the old address | Update both rows in wp_options, or set WP_HOME and WP_SITEURL in wp-config.php. |
| Import stops: file too large | PHP upload and post limits | Import the .sql.gz, or use Restore a MySQL Database in cPanel. |
| The login form loops | Cookies from the old domain, or the backup's users table | Clear cookies for the domain, then log in with the credentials that belonged to the backup. |
For a store, check the orders list after a database restore for duplicate renewals. A subscription record returns to its old state, so a period paid after the backup can look unpaid to the billing plugin.
If there is no usable copy left, a managed WordPress backup service takes one on a schedule and keeps it off the server. The 3-2-1 rule explains how many copies to keep so the next restore has something to open.
Frequently Asked Questions
How do I restore WordPress from a backup?
Restore the files, then the database. In cPanel, extract the archive into public_html through File Manager, then import the .sql file in phpMyAdmin. If wp-admin still loads and the backup belongs to a plugin, that plugin's Restore screen is faster.
Do the database or the files go back first?
Files first, then the database. Put the WordPress file tree back, confirm wp-config.php matches the database you are about to import, then import the dump. Doing it the other way round leaves the site pointing at files that are not there yet.
Will restoring delete posts written after the backup?
Yes. A restore replaces the site with the state on the backup date, so anything written after that point is gone unless you exported it first. Copy the newer posts or take a fresh database dump before you start.
How do I restore only the database?
Skip the file step. Open phpMyAdmin, select the WordPress database, and import the .sql dump on the Import tab. Use this when the theme and plugins are fine and only content, settings or a plugin table went wrong.
Why does the restored site redirect to the old domain?
The database still holds the old site URL in wp_options. Update the siteurl and home rows to the live domain, or define WP_HOME and WP_SITEURL in wp-config.php, then reload and save Settings, Permalinks once.
Can WebJi restore the site for me?
If the site is on a WebJi plan, email support@webji.services with the domain and the date you want back. Support is 24/7 by email in Hindi and English, with an average first reply under 60 minutes, and the desk confirms what your plan keeps before changing anything.

