Wahab Migration Vault creates a single native .usm backup containing the WordPress database and wp-content data, and restores it with an engine built so that every operation is checkpointed, resumable and integrity-checked, with rollback procedures designed to reduce restore risks. Hosting limits and database privileges affect results.
- The live database is modified by exactly one atomic RENAME TABLE; WordPress never sees a missing table.
- Live files are moved (never deleted) into a journaled rollback area until the final health check passes.
- Restore failures are handled by recovery and rollback workflows; verify recovery on a staging site before relying on it for production.
- A private maintenance marker is used during site restore.
- Keyset search/replace with no LIKE ‘%needle%’ scans, binary-safe columns, no-primary-key table support and oversized-value handling.
- Streamed oversized rows, views/triggers, generated columns, exactly-once transactional import, destination privilege/packet/collation/storage preflight.
- Per-chunk SHA-256 uploads with resumable server-side verification (no size cut-off).
- Selective restore, mirror mode, orphan cleanup, WP-CLI commands and a fault-injection test matrix.
Supported formats:
* .usm — recommended native compact streaming backup with per-entry integrity checks and database integrity metadata
* .zip — legacy/native-compatible archive import
* .wpress — classic uncompressed compatibility mode; newer compressed/encrypted variants may not be supported
Human-readable source and build instructions
The complete, human-readable original JavaScript source is included in src/admin.js. The
matching authored stylesheet is src/admin.css. Both files are included in this ZIP and
neither is produced from private, inaccessible source. No third-party bundled/minified
JavaScript libraries are distributed, and no npm, Composer or webpack dependencies are
required. Readable developer source is maintained in src/admin.js and src/admin.css. The
plugin serves the whitespace-compacted assets/js/admin.min.js and
assets/css/admin.min.css files in production, and the original readable sources
when SCRIPT_DEBUG is enabled. Both sets are shipped in the plugin ZIP.
The build is reproducible without npm dependencies: run
python3 tools/build_assets.py
from the plugin root. This removes only redundant line indentation and empty
lines; it does not rewrite JS tokens or change string contents. The readable
assets/js/admin.js and assets/css/admin.css are retained as compatibility copies.
Serving the compact asset is an admin-only optimization (not a measured improvement
to public-site page load speed).
Security and performance notes
Only users with manage_options and a valid AJAX nonce can start ordinary migration operations.
During a database restore, migration-specific bearer tokens can authorize the remaining checkpoint calls because the restored database can invalidate the original WordPress login.
Backup deletion is restricted to supported archive filenames physically located in this plugin’s backup directory (no symlinks).
Migration and restore deliberately execute multiple SQL statements per batch and read large fields in bounded slices so PHP memory, database packet limits, journal semantics and resume checkpoints remain safe. These are not normal frontend page-load queries and cannot safely be merged into one bulk query.
Similarly, uncached HTTP probes are intentional: a fresh status check is needed on each migration/rollback, and cached responses would risk releasing broken sites.
The admin-only JS/CSS is loaded only on Site Migrator screens, not the public frontend or other admin screens.