No security system is perfect. Even with malware scanning, firewalls, and 2FA in place, determined attackers sometimes get through. When that happens, a solid backup strategy is the difference between a 2-hour recovery and a week-long disaster. Having clean backups ready is a critical part of any incident response plan.
The 3-2-1 backup rule
The industry standard for backup strategy is 3-2-1:
- 3 copies of your data
- 2 different storage media or locations
- 1 offsite copy (somewhere completely separate from your server)
For WordPress, this typically means:
- 1 copy on the server (current state)
- 1 copy in cloud storage (Dropbox, Google Drive, AWS S3)
- 1 copy as a local download on your computer or NAS
What a complete WordPress backup includes
A backup that doesn't include everything is worthless for disaster recovery. A complete backup contains:
๐ฆ backup-2025-03-10.zip
โโโ database.sql โ All WordPress data
โโโ wp-config.php โ Database credentials, secret keys
โโโ .htaccess โ Rewrites, security rules
โโโ wp-content/
โ โโโ plugins/ โ All installed plugins
โ โโโ themes/ โ All themes
โ โโโ uploads/ โ All media files
โโโ manifest.json โ Backup metadata
Note: WordPress core files (wp-admin/, wp-includes/) are intentionally excluded โ they can always be reinstalled fresh from WordPress.org.
WO Security Shield's backup system
WO Security Shield includes a built-in backup manager with:
Scheduled backups: Configure automatic backups daily, weekly, or after significant events. Backups run as background processes and don't slow down your site.
Remote destinations: Upload backups automatically to:
- FTP/SFTP server
- Dropbox
- Google Drive
Retention policy: Keep the last N backups (default: 10). Older backups are deleted automatically to manage storage.
Backup from the dashboard: Trigger a new backup remotely from your WO Security Shield dashboard without logging in to WordPress.
Recovery process
Full site recovery from backup
- Download the backup ZIP from your storage destination
- Extract to a clean hosting environment
- Create a new database and import
database.sql - Update
wp-config.phpwith new database credentials - Upload the file tree to your server
- Visit your WordPress admin and run the database upgrade if prompted
Database-only recovery
If only your database was compromised (e.g., a SQL injection attack that modified content):
- Export the malicious
wp_optionsvalues you want to remove - Import a clean
database.sqlfrom a known-good backup - Re-apply any legitimate changes made since the backup (new posts, orders, etc.)
Testing your backups
A backup you've never tested is a backup that might not work when you need it most. Set a quarterly reminder to:
- Download your most recent backup
- Spin up a staging environment (Local by Flywheel, WP Engine staging, etc.)
- Restore the backup to staging
- Verify your site loads and functions correctly
This also verifies that your backup process is actually running and producing valid archives.
Don't back up to the same server
Storing backups in /wp-content/uploads/wss-backups/ (the default location) is convenient but risky. If the server is compromised, the attacker can access or delete your backups.
WO Security Shield stores backups locally by default (protected by .htaccess) but strongly recommends configuring a remote destination immediately after enabling backups.
For a step-by-step guide on recovering from an attack using your backups, see how to clean a hacked WordPress site. Set up automated backups with remote storage today at wosecurity.com.
The 3-2-1 Backup Rule for WordPress
The gold standard backup strategy follows the 3-2-1 rule:
- 3 copies of your data
- 2 different storage types
- 1 off-site location
For WordPress, this translates to:
| Copy | Storage type | Example |
|---|---|---|
| Live site | Server SSD | Your hosting provider |
| Local backup | Server storage | /wp-content/uploads/wss-backups/ |
| Remote backup | Cloud storage | Amazon S3, Google Drive, Dropbox |
What Must Be Included in Your Backup
A complete WordPress backup contains two parts:
1. Files:
/wp-content/โ your themes, plugins, uploads, and custom codewp-config.phpโ your database credentials and security keys.htaccessโ your rewrite rules and server configuration- Any custom files outside the standard WordPress structure
2. Database:
- All WordPress tables (
wp_posts,wp_options,wp_users, etc.) - WooCommerce order data (if applicable)
- Custom plugin tables
Missing either part makes your backup useless. A file-only backup without the database loses all your content. A database-only backup without files loses your theme, plugins, and media library.
Backup Frequency Based on Site Type
| Site type | Recommended frequency | Why |
|---|---|---|
| Static brochure site | Weekly | Content rarely changes |
| Blog (1-2 posts/week) | Daily | New content needs protection |
| WooCommerce store | Every 6 hours | Orders and customer data change constantly |
| Membership site | Every 6 hours | User-generated content and subscriptions |
| High-traffic news site | Hourly | Content published multiple times per day |
Testing Your Backups
A backup you've never tested is not a backup โ it's a hope. Test your recovery process:
- Download a backup to your local machine
- Set up a local WordPress environment (Local by Flywheel, MAMP, or Docker)
- Import the database and copy the files
- Verify the site loads and content is intact
- Document the process so you (or your team) can do it under pressure during an actual incident
Do this at least once per quarter. The worst time to discover your backup process is broken is during an active compromise.
Disaster Recovery Checklist
When disaster strikes, follow this order:
- Don't panic โ if you have backups, your data isn't lost
- Document the current state โ screenshots, error messages, file timestamps
- Identify the type of incident โ hack, host failure, accidental deletion, or failed update
- Choose the right recovery point โ the most recent backup before the incident
- Restore to a staging environment first if possible โ verify the backup is clean
- Restore to production once you've confirmed the backup works
- Run a full security scan after restoration
- Change all passwords โ especially if the incident was a security breach
