Lab 21 · Performance

We improved Salvo’s restore: a 10 GB account back in 5 min 45 s, at the storage’s worst hour

Date: Oct 19, 2026Server: one real account, ~10 GBReading time: 4 minTopic: Performance
The problem

When a customer loses their whole account (a WordPress site, a database and 13 mailboxes, 10 GB), they are on the phone, waiting. We measured how long Salvo took to bring that account back at the worst possible moment: the hour when the backup storage is busiest, receiving backups from several other servers at the same time. The account’s server was calm; the bottleneck was the storage. Result: 29 min 47 s. We did not like it. We went after the cause, improved Salvo’s restore in two places and measured again, with the same account, at the same hour.

Result
5 min 45 sfor the 10 GB account to come back whole after the improvements, at the backup storage’s worst moment, when backups from other servers reach it at the same time. Before the improvements: 29 min 47 s
5.2×faster, and the account came back identical: 100% of customer files, all 13 mailboxes with the same messages and the WordPress database with the same checksum

Why it matters to whoever runs the server

  • From 29 min 47 s to 5 min 45 s: with the customer on the phone, it’s the difference between half an hour without site and email and under six minutes.
  • At the backup storage’s worst moment, with other servers’ backups arriving at the same time: the restore doesn’t have to wait for the storage to be free.
  • And it came back identical: 100% of customer files, the 13 mailboxes and the WordPress database with the same checksum.
  • Both improvements became Salvo’s default, and the road went on: the same options on 6 real accounts against JetBackup, and then the two-track restore, faster than the panel’s own package.See:Lab 23Lab 24
Same account, same hour: before and after the improvementsMeasured at the backup storage’s worst moment. On the right, how many times faster.
Where the time wentcPanel recreating the account takes about 3 minutes in all of them: that is the floor. Each improvement shrank fetching the backup.
Source: Salvo Lab · one real ~10 GB account · Oct 17–19, 2026
Storage’s worst momentBeforeChange 1Changes 1 and 2
Fetching the backup26 min 57 s4 min 44 s2 min 39 s
cPanel recreating the account2 min 48 s2 min 57 s3 min 03 s
Deleted to back29 min 47 s7 min 44 s5 min 45 s
Faster than before—3.9×5.2×

Method

One real account: a WordPress site with a 12-table database, 13 mailboxes with 15.5 thousand messages and 24.9 thousand files. About 10 GB on the storage and 11 GB once restored.

The backup sits on a remote storage, reached over SSH, which also receives backups from other servers. The three restores ran within the same hour, that storage’s busiest: the account was deleted and restored without the improvements; with improvement 1; and with improvements 1 and 2.

Before and after each restore, a full snapshot of the account: the hash of every file, the checksum of every table and the messages in every folder. In all three, the customer’s account came back identical: 23,801 of 23,801 customer files (website, uploaded files and messages), 100%, the database with the same checksum and the email the same, mailbox by mailbox. The only differences are in files the system recreates on its own: mail server indexes, panel caches and copies of the webmail database that the panel renames with the restore date.

How we found the bottleneck. In the first measurement, the panel’s standard backup package, already on the server itself, came back in 3 min 04 s; Salvo, fetching the backup from the remote storage, took 58 min 40 s, and 93% of that was reading the storage. With the storage without that load, it dropped to 7 min 53 s, and multiplying the reads barely helped. That is when we saw the single-connection queue.

What we changed in Salvo

First, we looked at where the time went. cPanel recreating the account takes about 3 minutes in any scenario: that is the floor, and it does not depend on Salvo. The other 27 minutes were Salvo fetching the backup from the storage. The cause: it talked to the storage over a single connection, one request at a time, like a bank line with one cashier open; at the storage’s busiest hour, each request took longer and the line moved slowly. Improvement 1, eight cashiers open: Salvo now fetches the backup over 8 connections at once. That alone took the account from 29 min 47 s to 7 min 44 s. Improvement 2, the backup comes whole, in one go: instead of fetching pieces bit by bit while restoring, Salvo copies the account’s backup to the server in a single pass (110 s, at 91 MB/s) and restores from there. We got to 5 min 45 s, with no extra disk at the peak. With both, the restore at the worst hour was faster than the best one we had measured with the storage free (7 min 53 s). Both improvements became Salvo’s default. And the road went on: in Lab 23, with 6 real accounts against JetBackup, and in Lab 24, with the two-track restore, faster than the panel’s own package. And the backup? It does not gain from the extra connections (74 s with 1, 110 s with 8): in the backup, what limits is reading and compressing the data on the server.

?
What we don’t know yetOne measurement per round, on one account and one storage. The three ran within the same hour, but not at the same time, and the storage load varies within the hour. Fetch time depends on the storage and the network; recreate time depends on the server. Afterwards we measured other accounts and several restores at once, in Labs 23 and 24.
Want to see Salvo on your server?Join the beta waitlist. We’ll let you know when there’s a spot.

How it connects to the other labs

Integrity checked file by file
20 sThe whole account restored on another server: domains, email, identical database and grantsLab 11 · Oct 15, 202699.96%Disaster recovery: 10 whole accounts on another server, 99.96% of customer files identicalLab 16 · Oct 16, 2026100%Restoring a cPanel backup through Salvo: four times, the same result, and 100% of messages identicalLab 18 · Oct 17, 2026~2 minThe account is gone: back, whole, from the backup, in about 2 minutesLab 19 · Oct 17, 20265 of 5Restore only what you need: a database, a mailbox, a few files, all back exactly as they wereLab 20 · Oct 17, 20263.3 sWordPress: restore only the table that broke, in 3 seconds instead of 2 minutesLab 22 · Oct 18, 202699.98%WordPress backup with email: 6 real sites restored by Salvo and by JetBackupLab 23 · Oct 19, 2026250 sRestoring WordPress with Salvo faster than with the cPanel package: 6 real sites, one and many accounts at a timeLab 24 · Oct 19, 2026
salvo. Backup for hosting servers. A GK2 product.
Product
Lab
Salvo
Language
© 2026 GK2We use analytics cookies (Google Analytics).salvobackup.com/lab/restoring-a-10-gb-account/