wpmgr
Backups and restore

Incremental WordPress backups with point-in-time restore

Schedule full and incremental backups for every site in your fleet. Restore to any snapshot with the site staying online, all without touching a shared password.

A full backup every night wastes time and storage

Most WordPress backup plugins copy the entire site on every run. When something breaks at 2 am, that nightly archive is hours old, and restoring from a giant zip on a live server takes down the site for everyone. A smarter approach records only what changed, keeps the full history in an expandable chain, and lets you restore to any point without going offline.

How it works

Under the hood

The steps that make it work, and what each one does.

1

Schedule backups per site

Set a daily or weekly schedule per site, or run a manual backup on demand before a risky change. WPMgr queues the job and the lightweight agent plugin handles the export on the site's own server with no SSH and no shell access required.

2

Increments pack only changed files

The first run is a full base snapshot. Every subsequent run packs only files that changed since the last base or increment. Database dumps use a pure-PHP streaming archiver that works on locked-down managed hosts without mysqldump.

3

Stored to the destination you choose

Completed archives are streamed to your configured backup destination: S3-compatible storage, SFTP, or local disk. Image bytes and file data move directly from the site to storage using short-lived presigned URLs, never through the control plane.

4

Restore to any snapshot

Pick any base or increment in the chain and restore. The site stays online through the restore, the previous state is preserved as a restore point, and you can revert the revert if something still looks wrong.

Backup chain7 snapshots
BaseJun 15218 MB
-
+1Jun 164.2 MB
-
+2Jun 176.8 MB
-
+3Jun 182.1 MB
-
+4Jun 198.4 MB
-
+5Jun 205.7 MB
-
+6Jun 213.2 MB
Fleet backup health
shop.example.com
2h agoprotected
blog.example.com
1h agoprotected
staging.example.com
3d agostale
client-a.example.com
4h agoprotected

What's included

Every capability ships in the open-source release.

Incremental backup chains

Base plus increments in one expandable chain. Increments pack only files that changed, so storage costs stay proportional to what actually changed, not the full site size every time.

Point-in-time restore

Restore to any snapshot in the chain, full or incremental. The site stays reachable during restore. Disconnect and reconnect history is preserved so a full history is never lost.

Fleet backup browser

See every site's backup status across the fleet: protected, stale, or unprotected. Sort and filter to find sites that have not run a successful backup in the last 24 hours.

Client-side encrypted backups

Enable end-to-end encryption and the control plane stores only ciphertext. It never holds the decryption key, so even a compromised control plane cannot read your backup data.

No shell access required

The agent uses a pure-PHP streaming dump and archiver. Backups work on managed and locked-down WordPress hosts without mysqldump, shell access, or FTP credentials.

Automatic pre-update snapshot

Fleet update runs take an automatic snapshot before applying changes. If a health check fails post-update, the site auto-reverts to the snapshot and reports the failure.

FAQ

Questions answered

Common questions about this feature.

Self-host it, read the code, and run your whole fleet.

Free and open source. No per-site fee. The full release is on GitHub.