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.sqlBelow is how the output typically looks in a browser, terminal, or API client:
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
- Deploy fresh WordPress or empty database.
- Import SQL dump via
mysqlclient or phpMyAdmin. - Restore
wp-contentand updatesiteurl/homeoptions if domain changed. - Flush permalinks and regenerate thumbnails if paths moved.