Creating an effective manual backup strategy for a custom blog backend

Plugins can automate backups, but understanding manual backups helps you recover when plugins fail or hosting locks you out. A complete WordPress backup includes files (especially wp-content) and a MySQL database export containing posts, options, and users.

What to copy from disk

  • wp-content/themes — custom theme and child theme changes.
  • wp-content/plugins — if you use bespoke plugins.
  • wp-content/uploads — media library images and PDFs.
  • wp-config.php — store securely; contains database credentials.

You usually do not need to archive WordPress core on every run; reinstall core from wordpress.org during restore instead.

Database export with mysqldump

From SSH or local terminal, export with a dated filename. Compression saves space for large tutorial sites with many revisions.

mysqldump -u DB_USER -p DB_NAME > backup-2026-09-18.sql
        gzip backup-2026-09-18.sql

Below is how the output typically looks in a browser, terminal, or API client:

Output
Example ran successfully.

Verify the dump is not empty (wc -l backup.sql) and test restore on a staging subdomain quarterly. Backups you never tested are assumptions, not safety nets.

Off-site storage rules

Keep three copies: production, local encrypted drive, and cloud object storage with versioning. Restrict bucket permissions; backup archives contain user emails and hashed passwords.

Restore outline

  1. Deploy fresh WordPress or empty database.
  2. Import SQL dump via mysql client or phpMyAdmin.
  3. Restore wp-content and update siteurl/home options if domain changed.
  4. Flush permalinks and regenerate thumbnails if paths moved.