Backups that
actually restore.

Every staging launch creates a verified, encrypted snapshot of your live site before a single byte of WordPress boots in staging. We hash-chain snapshots, test-restore a random sample nightly, and give you a one-command rollback with no guessing.

SHA-256 verified Nightly restore tests 90-day retention
Snapshot specVerified
Formatzstd + tar
ChecksumSHA-256 per chunk
EncryptionAES-256-GCM
Key custodyAWS KMS · per-site CMK
Chunk size8 MB
DedupContent-addressed
StorageS3 + cross-region replica
Retention · free7 days
Retention · pro90 days
Restore RTO< 4 min (p50)

Every snapshot references the one before it.

Tamper with any byte of any snapshot and the chain refuses to verify. Corruption surfaces immediately, not the day you need to restore.

Snapshot #0127
Tue · 04:00 UTC
size · 2.3 GB
chunks · 287
dedup · 68%
prev · 4a1f…2e0b
✓ VERIFIED
Snapshot #0128
Wed · 04:00 UTC
size · 2.3 GB
chunks · 291
dedup · 71%
prev · 8c77…91a3
✓ VERIFIED
Snapshot #0129 · pre-launch
Wed · 14:22 UTC
size · 2.3 GB
chunks · 291
dedup · 98%
prev · 2f4e…c8d1
✓ VERIFIED · RESTORE POINT
Snapshot #0130
Thu · 04:00 UTC
size · 2.4 GB
chunks · 296
dedup · 67%
prev · 9a3b…71f5
✓ VERIFIED

We restore someone's backup
every single night.

At 03:00 UTC we sample 0.5% of all snapshots from the previous day and perform a full restore into an isolated container. We diff the restored filesystem against the original manifest. Any mismatch pages an on-call engineer.

847,392 restores drilled in the last 12 months
0 silent corruptions since 2024-03
Public status feed · status.stageforge.app/restore-drill
Last 7 nightly drills
0 failures
Apr 23
3,283
Apr 22
3,119
Apr 21
3,402
Apr 20
3,521
Apr 19
3,200
Apr 18
3,041
Apr 17
3,237

One command. Four minutes. Zero surprises.

$ stageforge restore --site acme-shop.com --to snapshot-0129
fetching manifest · snapshot-0129 (2.3 GB, 291 chunks)
verifying SHA-256 chain · 4 snapshots back to baseline
✓ chain intact · head 2f4e…c8d1
decrypting chunks · AES-256-GCM · KMS grant sf-acme-001
restoring to holding container · 2m 18s
running restore-diff against manifest
✓ 8,421 files · byte-exact
swapping DNS · zero-downtime
✓ restored acme-shop.com at 04:11:27 UTC
total: 3m 51s · pre-restore snapshot #0131 retained
$

The backup you'll actually use.

Because an untested backup is a lie you tell yourself at 3 AM.

Start free See the activity log →