===1 Click Migration & Backup: Free WordPress Migration Plugin with Zero Downtime & Easy Clone===
Contributors: 1clickmigration
Tags: wordpress migration, wordpress backup, clone wordpress, wordpress restore, wordpress site transfer, free wordpress migration plugin, wordpress staging, zero downtime migration, move wordpress site
Requires at least: 4.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 3.1.5
Author URI: https://1clickmigration.com
License: GPLv3 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html

Free WordPress migration plugin for backup, restore, clone, and site transfer with zero downtime. Migrate WordPress site easily.

== Description ==

### 1-Click Migration: Your Ultimate Free WordPress Migration Plugin & Backup Solution ###

Discover the ultimate free WordPress migration plugin for effortless WordPress backup and restore. 1-Click Migration empowers you to migrate WordPress site, clone WordPress site, or perform a WordPress site transfer between hosts or domains with guaranteed zero downtime WordPress migration. It's the ideal WordPress staging plugin and a complete solution for robust WordPress backup and restore.

**Why Choose 1-Click Migration for WordPress Backup & Migration?**

✅ **One-Click WordPress Backup & Migration** – Effortlessly backup and restore your WordPress site with a single click
✅ **Seamless WordPress Site Migration** – Easily migrate WordPress site to a new host or domain safely and quickly, making any WordPress site transfer a breeze.
✅ **Clone WordPress Site for Staging** – Instantly clone WordPress site to create WordPress staging plugin environments or development copies.
✅ **Zero Downtime WordPress Migration** – Ensure your live site remains fully operational throughout the entire WordPress backup and migration process for true zero downtime WordPress migration.
✅ **Selective WordPress Backup & Restore** – Granularly choose what to backup and restore for your WordPress site: database, plugins, uploads, themes, and more.
✅ **Automatic URL & Data Replacement** – All URLs and serialized data update automatically when you move WordPress site to a new domain.
✅ **Secure Encrypted WordPress Backups** – Keep your WordPress backups safe with password protection and military-grade encryption.
✅ **Direct WordPress Site Transfer** – Perform a swift WordPress site transfer directly server-to-server, avoiding large downloads or uploads.
✅ **No Size Limits for WordPress Migration** – Backup and migrate WordPress site of any size, 100% free, unlike other free WordPress migration plugins.
✅ **Easy WordPress Migration for All** – Enjoy an intuitive and easy WordPress migration plugin experience for beginners and professionals alike.

Perfect for: Migrate WordPress site, complete WordPress backup and restore, create WordPress staging plugin environments, clone WordPress site for development, seamless WordPress site transfer between hosts, or to move WordPress site to a new domain. Your all-in-one free WordPress migration plugin!

Learn more: [1ClickMigration.com](https://1clickmigration.com)

== How WordPress Backup & Migration Works ==

**Backup Your WordPress Site:**
1. Remove unnecessary themes, plugins, and media files to optimize backup size
2. Optional: Clean your database with [Advanced Database Cleaner](https://wordpress.org/plugins/advanced-database-cleaner/)
3. Deactivate all plugins except 1-Click Migration
4. Enter your email and click **Backup Site** – typically completes in 10-30 minutes
5. Save the 8-character restore code we email you when the backup completes

**Migrate & Restore Your WordPress Site:**
1. Install WordPress and 1-Click Migration on your new hosting provider
2. Delete any pre-installed plugins from the new site
3. Enter the same email you used for the backup, paste the restore code from your email
4. Click **Restore Site** to complete your WordPress migration
5. Large sites can use selective restore options for files over 1GB

== Advanced WordPress Backup & Migration Features ==

**Selective Backup & Restore Options:**
Choose exactly what to backup and migrate:
* WordPress Database backup
* Plugins backup and migration
* Media uploads backup (images, videos, files)
* Theme files backup and transfer
* Selective restore for large WordPress sites

**Migration & Backup Management:**
* **Retry Failed Backups** – Automatic and manual retry options for WordPress backup
* **Stop & Reset** – Cancel and restart backup or migration process anytime
* **Large Site Support** – Restore WordPress sites over 1GB in sections for better stability
* **Progress Tracking** – Real-time backup and migration progress monitoring

**WordPress Backup Security & Privacy:**
* AES-256 encryption applied locally before files leave your server
* Secure Amazon S3 cloud storage for WordPress backups
* Backups automatically deleted after 48 hours
* Restore requires both your email and the 8-character code we send you
* GDPR compliant WordPress backup solution

== Installation ==
1. Upload the `1-click-migration` folder to `/wp-content/plugins/` or install via WordPress plugin directory
2. Activate 1-Click Migration through the WordPress Plugins menu
3. Navigate to Tools → 1-Click Migration to start your WordPress backup or migration

== Frequently Asked Questions ==

= How long does WordPress backup and migration take? =
Most WordPress site backups and migrations complete in 10-30 minutes, depending on site size and hosting server resources.

= How long do I have to restore my backup? =
Backups and their restore codes are valid for 48 hours after creation. After that the backup is deleted from our servers and you'll need to run a fresh backup.

= What if I lose the restore code email? =
The restore code is the only way to download your backup, and we cannot retrieve a lost code. If you don't see the email, check spam — otherwise just run the backup again to get a new code.

= Can I backup only specific parts of my WordPress site? =
Yes! Use the advanced options to selectively backup and migrate your database, plugins, uploads, or themes. Perfect for large WordPress sites.

= Does 1-Click Migration work with WordPress Multisite? =
Not currently. The plugin is optimized for single WordPress site backup and migration.

= Will my URLs update automatically during WordPress migration? =
Yes! 1-Click Migration automatically updates all database entries including serialized data when you migrate your WordPress site to a new domain.

= How long do I have to restore my WordPress backup? =
WordPress backups are available for 48 hours after creation. You can create a new backup anytime if you miss the restoration window.

= Is there a limit on WordPress site size for backup and migration? =
No! Unlike other WordPress migration plugins, 1-Click Migration handles sites of any size completely free. Large sites over 1GB can use selective restore options.

= Can I use this for WordPress staging site setup? =
Absolutely! Clone your live WordPress site to create staging environments for testing updates, themes, or plugins safely.

= Does WordPress backup and migration cause downtime? =
No. Your live WordPress site remains fully operational during the entire backup and migration process (zero downtime migration).

= Which hosting providers work with 1-Click Migration? =
All of them! Migrate WordPress sites between any hosting providers: Bluehost, SiteGround, WP Engine, Kinsta, GoDaddy, HostGator, DreamHost, and all others.

== Screenshots ==
1. One-click WordPress backup & migration dashboard
2. Advanced Options
3. Restore Completed

== Changelog ==
= 3.1.5 =
* **Backup Reliability**: Added multipart uploads for large backup archives to reduce S3 timeout failures on slower hosts.
* **Restore Reliability**: Added resumable downloads and stronger ZIP state validation so large restores can recover from interrupted transfers.
* **Database Restore**: Hardened SQL import fallback for hosts without MySQL CLI access.
* **Compatibility**: Removed pre-3.0 legacy backup endpoint handling.

= 3.1.4 =
* **Log Noise Reduction**: Suppressed unrelated theme/plugin PHP errors after migrations finish and deduplicated identical PHP errors across requests while migrations are active.

= 3.1.3 =
* **User Guidance**: Added contextual "How to fix" messages for quota, write permission, loopback, download/decrypt/extract, and database import failures.

= 3.1.2 =
* **Restore Reliability**: Restore now fails clearly when disk quota or write permissions prevent downloads, decryption, or ZIP extraction instead of reporting partial files as restored.
* **Restore Diagnostics**: Added a restore workspace write probe and hardened DB failure-context logging for malformed SQL payloads.

= 3.1.1 =
* **Backup Diagnostics**: Added admin-ajax loopback and worker dispatch logging to help identify hosts that block background backup workers.

= 3.1 =
* **Restore Reliability**: Fixed PHP fallback database imports on hosts where `proc_open` is disabled so comment-prefixed SQL table definitions are imported correctly.
* **Restore Safety**: Database import errors now stop the restore and surface a clear failure instead of logging `Restore completed.`
* **Restore Validation**: Restore now verifies the imported `siteurl` option before running URL replacement.

= 3.0 =
* **Redesigned Admin UI**: New tabbed Backup / Restore interface with clearer steps, inline help, progress card, and a yellow notice banner that surfaces the email/restore-code reminder after a backup completes.
* **Simpler Restore Access**: Backup now uses your email and sends an 8-character restore code when the backup completes. Restore takes only that code — no separate email field needed.
* **Pre-Flight Disk Space Check**: Backup and restore exit early with a clear message if there's not enough free disk space, instead of failing midway.
* **Backup Security**: Files continue to be encrypted (AES-256) before upload, with improved key handling behind the scenes.
* **Retention**: Backup availability is now consistently 48 hours.
* **Backup Reliability**: Improved backup stability on sites with plugins that interfere with long-running background tasks.
* **Restore Reliability**: Improved restore stability when plugin code, locked folders, or stubborn file permissions would previously interrupt a migration.
* **Security**: Removed the old legacy access path and tightened the restore flow.
* **Compatibility**: Existing backups from the previous version remain restorable during the short upgrade window only.

= 2.6.1 =
* **Critical Fix**: Fixed fatal `Call to undefined function OCM\ini_set()` crash on shared hosts that disable `ini_set`/`ini_get` via `disable_functions` — this was a 100% restore blocker on affected cPanel hosts
* **Critical Fix**: Fixed "OS: Windows" log message being written 250+ times per backup on Windows/XAMPP hosts — now logs only once per session
* **Bug Fix**: Fixed fatal crash when Stop & Reset is clicked mid-backup — background process now re-creates the temporary directory if it was deleted

= 2.6.0 =
* **Critical Fix**: Fixed DivisionByZeroError crash during database backup when tables report 0 MB in information_schema (affected Gravity Forms and other small tables)
* **Bug Fix**: Changed error catch from `Exception` to `Throwable` so PHP 8 DivisionByZeroError is properly caught by the fallback handler
* **Log Noise Reduction**: Added error deduplication to suppress identical PHP errors from being logged 30+ times per session (e.g. theme/plugin bugs)
* **Log Noise Reduction**: Suppressed per-table "Table being backed up" log messages that generated 50-80+ lines per backup on large sites
* **Log Fix**: Fixed misleading "Bucket created" log message that appeared after AWS 502 errors — now correctly says "Retrying bucket creation"

= 2.5.9 =
* **Maintenance Mode**: Automatically enables maintenance mode during restore to prevent visitors from seeing broken pages, white screens, or database errors
* **Admin & API Bypass**: Admin users and REST API requests (e.g. progress polling) bypass maintenance mode so the dashboard stays functional
* **Progress Indicator**: The admin progress endpoint now reports maintenance mode status so the dashboard indicator works
* **Auto Cleanup**: Maintenance mode is automatically disabled when the restore completes or is cancelled via Stop & Reset

= 2.5.8 =
* **Timeout Fix**: Reset PHP time limit before each major operation (archive, encrypt, upload, download, decrypt, extract) to prevent timeouts on large sites
* **Upload Fix**: Upload timeout now uses the full execution budget instead of the exhausted background process remaining time
* **Download Fix**: Restore file downloads now use the full timeout budget instead of remaining background process time
* **Bug Fix**: Fixed `Undefined array key "tables"` crash when mysqldump fails and falls back to PHP-based export
* **Bug Fix**: Fixed `error_reporting` never being restored on success paths in zip creation and folder backup
* **Resilience**: Error handler no longer kills the process for fatal errors from external themes/plugins (e.g. WooCommerce dependency in child themes)
* **Reliability**: Added pre-flight disk space check before DB and folder backups to fail early with a clear message
* **Cleanup**: Removed dead `retry` parameter from `wp_remote_post` calls

= 2.5.7 =
* **Bug Fix**: Fixed fatal error during restore where `$presigned_urls` (stdClass) was passed to `sprintf` instead of the directory path string
* **Bug Fix**: Made `mkdir` recursive when creating `tmp/db/` directory so it succeeds even if the parent `tmp/` directory was cleaned up
* **Restore Fix**: Clear stale background process queues after DB import to prevent source site's backup tasks from firing on the destination

= 2.5.6 =
* **Concurrency Fix**: Added MySQL advisory locks to prevent concurrent background handlers from processing the same batch simultaneously
* **Reliability**: Fixed race condition where multiple handlers could duplicate compress, encrypt, and upload operations
* **Upload Fallback**: Improved upload step to construct expected encrypted file path when step metadata is missing, preventing silent upload skips

= 2.3.7 =
* **Progress Bar Fix**: Resolved progress bar jumping back to 1% during database backup operations
* **Memory Management**: Implemented dynamic memory management with automatic page sizing based on available system resources
* **Error Handling**: Added robust validation and error handling for S3 file uploads with proper file path checking
* **Logging Improvements**: Enhanced logging system with better filtering to prevent progress bar interference from verbose messages
* **Debug Tools**: Added conditional debug logging (WP_DEBUG only) to help identify unmapped progress messages
* **Database Optimization**: Improved database export operations with dynamic row increment sizing and better memory monitoring

= 2.3.6 =
* **Reliability Fix**: Disabled async dispatch in favor of direct processing for guaranteed execution on all hosting environments
* **Compatibility**: Resolved backup hanging issues on AWS and other servers where async HTTP requests may fail silently
* **Stability**: Reverted to proven direct processing approach for maximum reliability across all hosting providers

= 2.3.5 =
* **UX Improvement**: Disable Backup/Restore buttons when all components are excluded to prevent empty backups
* **UX Improvement**: Fixed progress bar jump from 1% to 0% at the start of backup/restore operations
* **Bug Fix**: Added validation to prevent silent failures when attempting to backup with all components excluded

= 2.3.3 =
* **Bug Fix**: Fixed `is_processing()` method compatibility issue with different WP Background Processing library versions
* **Compatibility**: Replaced method call with direct transient check for maximum compatibility

= 2.3.2 =
* **Security Fix**: Added nonce verification and capability checks to prevent unauthorized access (CVE-2025-3455)
* **Reliability**: Simplified background processing for maximum compatibility across all hosting environments
* **UX Improvement**: Fixed progress bar freeze after restore completion and login
* **Performance**: Removed async complexity that caused race conditions on various hosts
* **Compatibility**: Enhanced stop & reset functionality to prevent stuck states

= 2.3.1 =
* Fixed white screen on deactivation  
* Improved retry logic for presigned URLs  
* Enhanced cleanup & error handling  

= 2.3 =
* Stability improvements  

= 2.2 =
* CSRF fix & updates  

= 2.1 =
* Bug fixes  

= 2.0 =
* Full redesign for easier use  
* Multiple bug fixes  

= 1.6 =
* Manual & automated retries  
* Improved hosting compatibility  

= 1.4 =
* Selective backup/restore added  
* Stop & Reset button implemented  

= 1.3 =
* Support for serialized DB entries  
* PayPal integration  

= 1.0 – 1.2 =
* Initial release & dependency updates

== Upgrade Notice ==

= 3.1.5 =
Improves large backup/restore reliability with multipart uploads, resumable downloads, and removes pre-3.0 legacy endpoint handling.

= 3.1.4 =
Reduces duplicate monitor emails by preventing old migration logs from collecting unrelated site PHP fatals after backup or restore completion.

= 3.1.3 =
Adds clearer recovery guidance when backup or restore fails on host configuration, quota, permissions, or database import issues.

= 3.1.2 =
Improves restore failure handling for disk quota/write errors and hardens restore diagnostics.

= 3.1.1 =
Adds backup worker diagnostics for hosts that block WordPress background loopback requests.

= 3.1 =
Restore reliability update for hosts without native MySQL CLI access. Please update now to keep backup and restore working.

== Reviews ==
If you love 1-Click Migration, please leave a **5-star review** on WordPress.org! Your feedback helps us improve this WordPress migration plugin.
