ZHBackup – Restore & Migration

Description

ZHBackup – Restore & Migration is a complete WordPress backup and migration solution. It handles full-site backups including the database, uploads, plugins, themes, mu-plugins, and root files — all via chunked AJAX processing that works on any hosting without timeout issues.

Key Features:

  • Flexible Backup Formats — Export your entire WordPress site (database + files) as either a standard ZIP archive or a .zhbackup archive.
  • Chunked Processing — AJAX-powered chunked export and import to avoid server timeouts, even on shared hosting.
  • Resumable Uploads — Browser-based chunked upload system that survives connection drops and resumes from where it left off.
  • Server-Side Import — Upload large backups via FTP/SFTP and import directly from the server for maximum reliability.
  • Serialized-Safe Find & Replace — URL replacement across all database tables that properly handles serialized data, JSON-escaped URLs, and Elementor widget data.
  • Secure Storage — Backups are stored outside the webroot when possible, protected by .htaccess, web.config, and index.php files.
  • Retention Policies — Automatically clean up old backups by count or age via WP-Cron.
  • ZIP Engine Fallback — Uses ZipArchive when available, falls back to PclZip for full compatibility.
  • mysqldump Support — Options to use native mysqldump for faster database exports when available, with automatic PHP fallback.
  • No Forced Signup — The plugin is fully functional without any account or email signup.

WordPress.org Compliant:

  • No obfuscated or encoded PHP
  • Proper sanitization for all inputs
  • Escaped outputs throughout
  • Nonces for all form submissions
  • Capability checks on every action
  • No hidden external API calls
  • No telemetry without explicit consent

External services

ZHBackup includes an optional newsletter signup form on the plugin Settings page.

This feature connects to an external service hosted by Hassan Zain at hassanzain.com. It is used only to add the submitted email address to the ZHBackup newsletter or product updates list.

Data is sent only when an administrator manually submits the optional signup form. The plugin does not contact this service during normal backup, restore, migration, import, export, or find-and-replace usage.

When the form is submitted, the plugin sends:

  • Email address entered in the signup form
  • Site URL (home_url())
  • Plugin slug (zhbackup)
  • Plugin version

Terms of service: https://hassanzain.com/terms-and-conditions
Privacy policy: https://hassanzain.com/privacy-policy

Privacy

ZHBackup does not send telemetry or usage analytics during normal backup, restore, migration, import, export, or find-and-replace operations.

The only optional external data transfer is the administrator-initiated newsletter signup described above.

Screenshots

  • ZHBackup dashboard with backup and restore actions.
  • Backup creation options for database and site files.
  • Import workflow for restoring or migrating a backup archive.
  • Find and replace tool for updating URLs after migration.
  • Settings screen with retention and optional signup controls.

Installation

  1. Upload the zhbackup folder to wp-content/plugins/.
  2. Activate the plugin through the Plugins menu in WordPress.
  3. Navigate to ZHBackup in the admin sidebar to start creating backups.

Alternatively:

  1. Go to Plugins Add New in your WordPress admin.
  2. Search for “ZHBackup – Restore & Migration”.
  3. Click Install Now, then Activate.

FAQ

Does this plugin work on shared hosting?

Yes. The chunked AJAX processing is specifically designed to work within typical shared hosting limits for memory, execution time, and upload size.

How large of a site can this handle?

There is no hard limit. The chunked processing system breaks work into small batches, so even sites with thousands of files and large databases can be exported and imported reliably.

Where are backups stored?

The plugin automatically selects the most secure location. It prefers a directory outside the webroot (not accessible via browser), but falls back to wp-content/zhbackup-backups/ if needed, where files are protected by .htaccess rules.

Can I import a backup from a different domain?

Yes. After importing, use the built-in Find & Replace tool to update old URLs to your new domain. It handles serialized data safely, including Elementor widget data.

Is the email signup required?

No. The email signup on the Settings page is completely optional and can be dismissed permanently. The plugin is fully functional without it.

Is the `.zhbackup` format free to use?

Yes. The .zhbackup export format is included for free and does not require any license key or activation page.

Does this plugin make external API calls?

Yes, but only for the optional newsletter signup on the Settings page after an administrator explicitly enters an email address and submits the form. No data is sent anywhere during backup, restore, migration, import, export, or find-and-replace operations.

Will importing overwrite my existing site?

Yes. Importing a backup will replace your database and files. Always create a fresh backup of your current site before importing.

Reviews

There are no reviews for this plugin.

Contributors and Developers

“ZHBackup – Restore & Migration” is open source software. The following people have contributed to this plugin.

Contributors

Change Log

1.0.0

  • Initial public release.
  • Full site backup with chunked AJAX export and import.
  • Support for .zip and .zhbackup backup formats.
  • Chunked, resumable browser uploads for large imports.
  • Server-side import from backups uploaded via FTP/SFTP.
  • Serialized-safe find and replace with Elementor support.
  • Automatic secure storage with .htaccess, web.config, and index.php protection.
  • Backup retention policies (by count or age).
  • ZipArchive with PclZip fallback and optional mysqldump support.
  • Optional, dismissible email signup with no forced account requirement.
  • WordPress.org-compliant release with no license activation system.