This guide shows you how to back up a website in CyberPanel and restore it from an archive when something goes wrong. You will create an on-demand backup, schedule recurring ones, download a copy off the server, and restore a site from either the panel or the command line.
Before you start
- A Linux VPS running CyberPanel with at least one website on it. If you have not installed it yet, see how to install CyberPanel on Ubuntu or AlmaLinux.
- Root SSH access to the server and your CyberPanel login. The panel listens on port 8090 by default, so you reach it at
https://203.0.113.10:8090. - Free disk space. A backup is a full copy of your files plus a database dump, so you need roughly the size of the site again, and room for the archive on top. Check with
df -h. - The database name and user for the site, if you plan to restore manually. Both are listed in the panel under Databases → List Databases.
Warning: Restoring a backup overwrites the live website and its database. Take a fresh backup of the current state first, and test the restore on a staging domain if the site is busy.
How CyberPanel backups work
CyberPanel writes a website backup as a single archive that holds the site's files and a dump of its database. Archives are stored on the server under /home/backup/, in a folder named after the domain. From the panel you can create one on demand, schedule recurring backups, and send copies to remote storage.
Two things to keep in mind. A backup that only exists on the same VPS is not a real backup, so copy it off the server. And CyberPanel's backup screens change between versions, so if a tab or button name looks different from this guide, check the current CyberPanel documentation.
Create a website backup in the panel
- Log in to CyberPanel at
https://203.0.113.10:8090. - Open Backup in the left menu, then the Create Backup tab.
- Select the website you want to back up from the domain list.
- Click Create Backup and wait. The panel shows a progress message and a success notice when the archive is written.
The archive lands in /home/backup/example.com/. Confirm it from SSH:
ls -lh /home/backup/example.com/You should see a .tar.gz file with a timestamp in the name. If the listing is empty, the backup failed — read the panel's error notice and check free space on /home.
Back up all websites at once
The same screen usually offers an option to back up every website on the server. That is useful before a panel upgrade or a migration, but it produces a large archive and takes longer. On a server with several busy sites, back them up one at a time so a single failure does not cost you the whole run.
Schedule automatic backups
- Go to Backup → Schedule Backup.
- Choose the website, the frequency (daily is a common choice) and how many copies to keep.
- Save the schedule.
Retention matters. Without a limit, backups fill the disk and the next run fails. Keep enough history to cover the time it takes you to notice a problem — a few days is usually enough for a website, longer if you rarely check it.
For off-server copies, CyberPanel can push backups to remote storage. Configure the destination under Backup → Remote Backups, and check the vendor documentation for the providers and credential fields your version supports.
Download a backup to your computer
Pull the archive down with scp so you have a copy that does not depend on the VPS:
scp root@203.0.113.10:/home/backup/example.com/backup-example.com-2026-01-01.tar.gz ./If you are not sure of the exact file name, list the directory first:
ssh root@203.0.113.10 "ls -lh /home/backup/example.com/"Store that copy somewhere you can reach if the server is gone — object storage, a NAS, or your own machine. A backup on the same disk as the site protects you from a bad plugin update, not from a failed disk.
Make a manual backup from the command line
When the panel is unavailable, or you want a plain archive you can read without CyberPanel, back up the files and database yourself.
Site files live under /home/<domain>/public_html. Archive them:
tar -czf /root/example.com-files-$(date +%F).tar.gz -C /home example.com/public_htmlThen dump the database, using the name and user shown in the panel:
mysqldump --single-transaction --routines --triggers -u example_db_user -p example_db > /root/example_db-$(date +%F).sql--single-transaction gives you a consistent dump of InnoDB tables without locking the site while it runs. For the full set of dump options and restore steps, see how to back up and restore MySQL databases with mysqldump.
Tip: Keep the file archive and the database dump together and name them with the same date. A restore that mixes files from Monday with a database from Friday is a debugging session you do not want.
Restore a website from a backup
Restore through the panel
- Go to Backup → Restore Backup.
- Upload or select the archive you want to restore.
- Choose the target domain and confirm.
Warning: The restore replaces the current files and database for that domain. Anything created after the backup is lost. Take a fresh backup of the live site before you start.
Restores take time on large sites. Do not close the browser tab or restart the panel while the job is running.
Restore manually
If you have a file archive and a SQL dump, restore them by hand.
Extract the files over the existing site:
tar -xzf /root/example.com-files-2026-01-01.tar.gz -C /homeImport the database:
mysql -u example_db_user -p example_db < /root/example_db-2026-01-01.sqlFix ownership so the web server can read the files. CyberPanel runs each site under the user that owns it, usually the same name as the domain:
chown -R example:example /home/example.com/public_html
find /home/example.com/public_html -type d -exec chmod 755 {} \;
find /home/example.com/public_html -type f -exec chmod 644 {} \;Then restart the web server:
systemctl restart lswsCheck it works
Open the site in a browser and walk through the pages that matter: the home page, a deep link, a form, and the login page of any CMS. Then confirm the server is answering cleanly:
curl -I https://example.comA 200 or 301 response is what you want. A 500 usually points to file ownership or a database connection problem — check the site's log under /home/example.com/logs/ and the LiteSpeed log at `/usr/local/lsws/logs
