How do I restore every account on a new server?
Use Restore → Restore all accounts. Choose a job, a point or a destination, preview what would happen, then queue one restore per account. Accounts already on the server are skipped unless you choose to overwrite them.
Start it
In the console, open Restore → Restore all accounts. The Accounts page also lists every account that has backups but is not on this server, marked "not on this server — restore?", with Restore them.
- Restore from:
- Job: the newest backup of each account in that job. Usually what you want.
- Point: every account of one backup point.
- Destination: the newest backup of each account stored on that destination.
- Filters (optional): only some accounts, leave some out, a name pattern such as
site*, or Only accounts that are not on this server. - Accounts that are already on this server:
- Skip them (the default).
- Overwrite them. A safety copy of each is taken first, so each can be undone. You must tick a confirmation and confirm again when you queue.
- Restore them under a new name: into
<account><suffix>, an account you created first.
- Choose Preview. Read the warnings: accounts without a unix user, databases without MySQL, accounts skipped and why. Fix what it says, then preview again.
- Choose Queue N restores.
Each account becomes one ordinary restore, the biggest first, run by the same workers and limits as any restore (a few at a time, depending on the server's size; Settings → Performance applies).
Read the result
The run page shows N of M done, then how many completed, completed with errors ("partial"), failed and were skipped, with the reasons of the partial and failed ones grouped and what to do. Download the summary as CSV or JSON.
Retry failed queues every failed or cancelled restore of the run again with the same settings. A partial one is not retried: fix the cause, then restore that account again.
With the API
The same thing without the console. Create an API key in Settings → API keys and send it as X-API-Key:
API=http://127.0.0.1:8087/api/v1
H=(-H "X-API-Key: <key>" -H 'Content-Type: application/json')
curl -s "${H[@]}" $API/restore-all/preview -d '{"source":"job","job_id":1}' # queues nothing
curl -s "${H[@]}" $API/restore-all -d '{"source":"job","job_id":1}' # prints the run id
curl -s "${H[@]}" $API/restore-all/1 # progress
curl -s "${H[@]}" "$API/restore-all/1/report?format=csv" -o restore-all-1.csv
curl -s "${H[@]}" -X POST $API/restore-all/1/retry-failed
Other fields: "source":"point","point_id":10 or "source":"destination","destination_id":2; "accounts", "exclude", "pattern", "only_missing":true; "existing":"overwrite","confirm_overwrite":true or "existing":"new_name","name_suffix":"2".
Reference run
On 2026-11-11, on a server with no panel, 115 accounts, 38 GB of files and 55 databases came back with 0 failures: the install took about 2 minutes, the BackupWall rebuild about 1 minute and restoring the 115 accounts 31 minutes (the 21 GB database alone took as long as everything else).