# Disaster Recovery Guide

> SiteVault Pro disaster recovery guide for WordPress: restore from cloud backups after a hack, server failure or broken update, by recovery key or manually.

- Canonical: <https://royalplugins.com/support/sitevault/disaster-recovery/>
- HTML version: <https://royalplugins.com/support/sitevault/disaster-recovery/>

---

When your WordPress site is completely broken and you can't access the admin panel, this guide will help you recover. Bookmark this page - you'll want access to it even when your site is down.

### Emergency? Skip Ahead

If your site is down right now and you have a recovery key, jump to [Recovery Key Method](#recovery-key). If you don't have a key, see [Manual Recovery](#manual-recovery).

## Before Disaster Strikes

The best disaster recovery starts before anything goes wrong. Set up these safeguards now while your site is working.

#### Generate a Recovery Key Do This Now

A recovery key lets you restore your site without accessing WordPress admin.

#### Go to SiteVault > Settings

Access the plugin settings from your WordPress admin.

#### Find Disaster Recovery section

Scroll down to the Disaster Recovery settings.

#### Click Generate Recovery Key

A 32-character secure key will be created.

#### Save the key securely

Store it in a password manager, print it, or email it to yourself. Do NOT save it only on your WordPress site!

Recovery Keys Expire

Keys expire after 24 hours for security. Generate a new one periodically or when you need to recover.

### Your Recovery Information Checklist

Store this information somewhere outside your WordPress site:

- **Recovery Key** - 32-character key from SiteVault settings
- **Recovery URL** - yourdomain.com/?rb\_recovery=YOUR\_KEY
- **FTP/SFTP credentials** - Host, username, password, port
- **Database credentials** - DB name, user, password, host (from wp-config.php)
- **Hosting control panel login** - URL, username, password
- **phpMyAdmin access** - Usually through hosting control panel
- **Most recent backup location** - Local server, cloud storage, or download

## Method 1: Recovery Key (Easiest)

If you generated a recovery key before the disaster, this is the fastest way to recover.

#### Using Your Recovery Key PRO

#### Access the Recovery URL

Visit: `https://yourdomain.com/?rb_recovery=YOUR_32_CHAR_KEY`

Replace YOUR\_32\_CHAR\_KEY with your actual recovery key.

#### Recovery Interface Loads

You'll see a standalone recovery interface (works even if WordPress is broken).

#### Select a Backup

Choose from available backups stored on your server.

#### Click Restore

The recovery process runs independently of WordPress.

#### Wait for Completion

Do not close the browser. When done, your site should be restored.

Recovery Key Not Working?

If the key is expired (older than 24 hours), invalid, or the recovery endpoint isn't responding, you'll need to use manual recovery methods below.

## Method 2: Manual Recovery (FTP + Database)

If you don't have a recovery key or it's not working, you can manually restore from a backup. This method works even if WordPress is completely broken.

#### What You'll Need Advanced

- **FTP/SFTP credentials** - Host, username, password, port (usually 21 for FTP, 22 for SFTP)
- **Database access** - phpMyAdmin through your hosting panel
- **Your backup files** - Either on the server, downloaded locally, or in cloud storage
- **An FTP client** - [FileZilla](https://filezilla-project.org/) (free), Cyberduck, or WinSCP

Where to Find Your Credentials

**FTP credentials:** Check your hosting welcome email, or find them in your hosting panel (cPanel > FTP Accounts, Plesk > FTP Access).

**Database credentials:** Look in your current wp-config.php file, or check cPanel > MySQL Databases.

### Step 1: Connect to Your Server via FTP

Open FileZilla (or your preferred FTP client) and enter your credentials:

- **Host:** Your domain (e.g., `ftp.yourdomain.com`) or server IP
- **Username:** Your FTP username (often your cPanel username)
- **Password:** Your FTP password
- **Port:** 21 for FTP, 22 for SFTP (more secure)

Click **Quickconnect**. Once connected, navigate to your WordPress directory (usually `/public_html/` or `/www/`).

### Step 2: Locate Your Backup Files

SiteVault stores backups in: `wp-content/sitevault/`

Inside you'll find folders named by date. Each backup contains:

- `backup-files-YYYY-MM-DD.zip` - All your WordPress files
- `backup-database-YYYY-MM-DD.sql` - Your database export

Can't Find Backups on Server?

Check these alternative locations:

- Your local computer (if you downloaded backups previously)
- Cloud storage (Google Drive, Dropbox, S3) if you set up remote storage
- Email attachments if you configured email notifications with backup links

### Step 3: Download and Extract the Backup

**Option A: Extract locally (recommended for shared hosting)**

1. Download the backup ZIP file to your computer via FTP
2. Right-click the ZIP and choose "Extract All" (Windows) or double-click (Mac)
3. You should see a complete WordPress folder structure (wp-admin, wp-content, wp-includes, etc.)

**Option B: Extract on server (if your host supports it)**

1. Log into cPanel > File Manager
2. Navigate to `wp-content/sitevault/`
3. Right-click the ZIP file and select "Extract"
4. Choose to extract to your WordPress root directory

### Step 4: Prepare Your WordPress Directory

Before uploading, decide your approach:

##### Scenario A: WordPress is broken but files exist

- Download and save your current `wp-config.php` (you'll need the database credentials)
- You can upload backup files directly, overwriting existing files

##### Scenario B: Fresh server / empty directory

- You'll need to create a database first (see Step 5a below)
- Upload all backup files including wp-config.php
- Edit wp-config.php with your new database credentials

Important: Preserve wp-config.php

If you're restoring to the same server, your existing wp-config.php has the correct database credentials. Don't overwrite it with the backup's wp-config.php unless you're on a new server.

### Step 5: Upload Files via FTP

1. In FileZilla, navigate to your extracted backup folder on the left (Local site)
2. Navigate to your WordPress directory on the right (Remote site)
3. Select all files and folders from your backup
4. Right-click and choose "Upload"
5. When prompted about existing files, choose "Overwrite" and check "Apply to all"

Large Sites: Be Patient

Uploading thousands of files can take 30-60+ minutes on slow connections. Don't interrupt the transfer. Consider using "Transfer > Process Queue" to resume if disconnected.

### Step 5a: Create Database (Fresh Server Only)

If you're restoring to a new hosting account, you need to create a database first:

1. Log into cPanel and find **MySQL Databases**
2. Create a new database (e.g., `yourdomain_wp`)
3. Create a new database user with a strong password
4. Add the user to the database with **All Privileges**
5. Note down: database name, username, and password

### Step 6: Import Your Database

This is the most critical step - your database contains all your content, settings, and users.

##### Via phpMyAdmin:

1. Log into cPanel and open **phpMyAdmin**
2. Select your WordPress database from the left sidebar
3. If restoring over existing data: Click the **Operations** tab, scroll to "Remove database", and delete all tables first (or select all tables and choose "Drop")
4. Click the **Import** tab at the top
5. Click "Choose File" and select your `.sql` backup file
6. Leave settings as default (Format: SQL, Charset: utf8mb4)
7. Click **Go** to start the import

Import Size Limits

phpMyAdmin typically limits imports to 50-100MB. If your database is larger:

- Use cPanel's **MySQL Database Wizard** import feature
- Contact your host to import the file server-side
- Use a tool like [Adminer](https://github.com/vrana/adminer) or BigDump

### Step 7: Update wp-config.php

If you're on a new server or created a new database, update wp-config.php with your credentials:

1. Download wp-config.php from your server via FTP
2. Open it in a text editor (Notepad++, VS Code, or even regular Notepad)
3. Find and update these lines:

```
// Database name - the one you created in cPanel
define('DB_NAME', 'your_database_name');

// Database username
define('DB_USER', 'your_database_user');

// Database password - replace the placeholder with your real password
define('DB_PASSWORD', '***');

// Database host - usually localhost, but some hosts differ
define('DB_HOST', 'localhost');
```

4. Save the file and upload it back to your server, overwriting the existing one

Table Prefix

Also check that `$table_prefix` matches your database tables. It's usually `wp_` but might be different if you customized it. Look at your tables in phpMyAdmin to confirm (e.g., `wp_posts`, `wp_options`).

### Step 8: Test Your Site

Visit your website. If everything worked, you should see your restored site!

##### If you see errors:

- **"Error establishing database connection"** - Double-check wp-config.php credentials
- **White screen** - Enable debug mode (add `define('WP_DEBUG', true);` to wp-config.php)
- **500 Internal Server Error** - Check file permissions (755 for folders, 644 for files)
- **Redirects to old domain** - Update site URL in database (see [URL Replacement Issues](https://royalplugins.com/support/sitevault/migration-issues/#url-issues))

##### Post-restore checklist:

- Log into WordPress admin
- Visit Settings > Permalinks and click "Save" (refreshes rewrite rules)
- Check that images load correctly
- Test a few pages and posts
- Verify plugins are working

## Method 3: Restore from Cloud Storage

If your server was completely wiped but you have backups in cloud storage, you can recover.

#### Recovering from Cloud PRO

#### Access Your Cloud Storage

Log into Google Cloud, Amazon S3, Dropbox, or OneDrive where your backups are stored.

#### Download the Latest Backup

Find the most recent backup (date in filename) and download both the ZIP file and SQL file.

#### Set Up Fresh WordPress (if needed)

If your server is wiped, install fresh WordPress from wordpress.org first.

#### Upload and Import

Upload extracted backup files via FTP and import database via phpMyAdmin (see manual method above).

#### Reactivate SiteVault

Once restored, SiteVault should be in your plugins. Activate and reconnect cloud storage.

## Common Disaster Scenarios

#### Site Hacked / Malware Infection

1. Download a backup from BEFORE the infection (check file dates)
2. Delete all WordPress files (keep wp-config.php temporarily)
3. Restore from clean backup
4. Change ALL passwords (WordPress admin, FTP, database, hosting)
5. Update ALL plugins, themes, and WordPress core
6. Install a security plugin (like GuardPress)

Don't Restore a Hacked Backup!

Make sure your backup is from before the hack occurred. Check backup dates against when you first noticed the issue.

#### Plugin/Theme Update Broke Site

1. Connect via FTP
2. Navigate to `wp-content/plugins/` or `wp-content/themes/`
3. Rename the problematic plugin/theme folder (e.g., `plugin-name` to `plugin-name-disabled`)
4. Site should load now - go to Plugins or Themes in admin
5. Delete the broken plugin/theme and reinstall a working version

#### Database Corrupted

1. Try repairing via phpMyAdmin: select database, click "Repair table" for each table
2. If repair fails, restore from your most recent database backup
3. If no database backup, check if your host has automatic backups

Or via wp-config.php (temporary):

```
define('WP_ALLOW_REPAIR', true);
```

Then visit: `yourdomain.com/wp-admin/maint/repair.php`

**Remove the line after repair!**

#### White Screen of Death (WSOD)

1. Enable debug mode in wp-config.php to see actual error
2. Check `wp-content/debug.log` for errors
3. Usually a plugin or theme issue - rename suspect folders via FTP
4. If nothing works, restore from backup

```
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
```

#### Hosting Account Suspended/Deleted

1. Contact your host to understand the situation
2. If recoverable, ask them to restore or give you files
3. If not, use cloud backups to restore on new hosting
4. Set up on new hosting: install WordPress, import backup
5. Update DNS to point to new server

## Recovery Troubleshooting

### Backup File is Encrypted

If you enabled encryption on your backups, you'll need your encryption key to restore. This key was set when you configured encryption in SiteVault settings. Without it, encrypted backups cannot be restored.

### Database Import Fails

- **File too large** - phpMyAdmin often has a 50MB or smaller upload limit on shared hosting
- **Character encoding errors** - Ensure database is set to UTF-8
- **Table already exists** - Drop existing tables first (or use "Add DROP TABLE" option)

Shared Hosting: Large Database Imports

If phpMyAdmin times out or rejects your SQL file:

- Split the SQL file into smaller chunks (under 50MB each)
- Use your host's "Import Database" tool in cPanel if available
- Contact your host's support - they can often import large files server-side
- Some hosts provide Adminer or BigDump tools for large imports

### Site Works But Admin Locked Out

Reset your password via phpMyAdmin:

```
UPDATE wp_users SET user_pass = MD5('newpassword123')
WHERE user_login = 'yourusername';
```

Replace `newpassword123` with your new password and `yourusername` with your admin username.

### Recovery Key URL Returns 404

- The recovery endpoint requires SiteVault Pro to be at least partially functional
- If WordPress is completely destroyed, use manual recovery instead
- Check that the plugin files still exist in `wp-content/plugins/sitevault-pro/`

### Database Prefix Mismatch After Restore

If your backup was from a site with a different table prefix (e.g., `oldprefix_` vs `wp_`), you need to update the SQL before importing:

```
# Replace old prefix with your current prefix
sed -i "s/oldprefix_/wp_/g" database.sql

# Then import
mysql database_name < database.sql
```

Also verify `$table_prefix` in wp-config.php matches your database tables.

## Troubleshooting Commands

Useful commands for diagnosing recovery issues (requires SSH access to VPS/dedicated servers).

#### Server Diagnostics Advanced

```
# Check PHP errors in real-time
tail -f /var/log/nginx/error.log    # Nginx
tail -f /var/log/apache2/error.log  # Apache

# Test if site responds
curl -I https://yoursite.com/

# List active plugins
wp plugin list --status=active

# Check database tables exist
wp db tables | wc -l

# Search-replace URLs (dry run first)
wp search-replace 'https://oldsite.com' 'https://newsite.com' --all-tables-with-prefix --dry-run

# Search-replace for real
wp search-replace 'https://oldsite.com' 'https://newsite.com' --all-tables-with-prefix

# Fix file permissions
sudo find /path/to/wordpress -type d -exec chmod 755 {} \;
sudo find /path/to/wordpress -type f -exec chmod 644 {} \;

# Fix ownership
sudo chown -R www-data:www-data /path/to/wordpress
```

Shared Hosting

If you don't have SSH access, these alternatives work:

- **Error logs:** Check cPanel > Error Log or hosting panel equivalent
- **URL replacement:** Use the "Better Search Replace" plugin
- **Permissions:** Use FTP client (FileZilla) right-click > File Permissions
- **Ownership:** Contact your host's support

#### WooCommerce Recovery

If recovering a WooCommerce site, verify data after restore:

```
# Check product count
wp post list --post_type=product --format=count

# Check orders
wp post list --post_type=shop_order --format=count

# Activate WooCommerce BEFORE theme (if theme depends on it)
wp theme activate twentytwentyfour
wp plugin activate woocommerce
wp theme activate your-woo-theme
```

Theme Activation Order

If your theme uses WooCommerce functions (like `is_checkout()`), you must activate WooCommerce BEFORE the theme, or you'll get fatal errors.

## After Recovery: Next Steps

### Immediate Actions

- Verify all pages and functionality work correctly
- Check media library for missing images
- Test forms, checkout, login, and other interactive features
- Clear all caches (plugin caches, CDN, browser)

### Security Actions (If Hacked)

- Change all passwords: WordPress, FTP, database, hosting panel
- Review and remove any unknown admin users
- Update WordPress core, all plugins, and themes
- Install/configure a security plugin
- Enable two-factor authentication

### Prevent Future Disasters

- Generate a new recovery key and store it safely
- Verify scheduled backups are running
- Confirm cloud storage sync is working
- Test a restore on a staging site to verify backups work

Bookmark This Page

Add this page to your bookmarks or save it as a PDF. You'll want access to these instructions even when your site is completely down.

## Still Need Help?

If you're unable to recover your site using these methods:

- Check if your hosting provider has automatic backups
- Look for any backups you may have downloaded locally
- Check cloud storage services you may have connected

Shared Hosting: Check Your Host's Backups

Most shared hosting providers keep automatic backups (even if you didn't configure any):

- **cPanel hosts:** Check "JetBackup" or "Backup Wizard" in cPanel
- **SiteGround:** Site Tools > Security > Backups
- **Bluehost/HostGator:** Contact support to request a restore
- **GoDaddy:** My Products > Web Hosting > Manage > Restore

These are often free and can restore your site even without SiteVault!

Still stuck? Email priority support for emergency recovery

Email **[support@royalplugins.com](mailto:support@royalplugins.com)** with your site URL, the most recent backup timestamp, and what failed during the restore attempt. Priority email support is included with your SiteVault Pro license — typical response time is within 24 hours, and we treat disaster recovery as highest priority.

[Staging Troubleshooting](https://royalplugins.com/support/sitevault/staging-issues/)
[Back to SiteVault Docs](https://royalplugins.com/support/sitevault/)
