Backups and Restore: What, Where, and How Often
Understand what panel backups cover, keep an off-site copy, take consistent database dumps, and actually test your restore.
Before you start
- Access to your panel account
- The service's SFTP credentials (on the SFTP card in the service detail)
- Somewhere independent of the server to store the copies
There is only one real question about backups: if the server disappeared tonight, how much could you bring back tomorrow? If you do not know the answer, you do not have backups. This guide sets up the smallest arrangement that makes the answer knowable.
What panel backups cover#
A panel backup is a point-in-time copy of the service's filesystem: worlds, configuration files, plugins. Two important things are not included. First, a database running as its own service -- that needs its own dump. Second, backups live on the same infrastructure; the event that loses the server can affect them too. So at least one copy must live somewhere else.
Pulling an off-site copy over SFTP#
Downloading the backup to your own machine
# Yalnizca degisen dosyalari ceker; ikinci calistirma cok daha hizlidir.
rsync -avz --progress \
-e "ssh -p 2022" \
[email protected]:/ \
./yedek/$(date +%F)/Backing up the database separately#
If your app or plugins write to a separate MySQL/PostgreSQL service, a file backup alone is not enough. If you restore the files while the database stays at an older state, the two disagree -- often more confusing than having no backup at all. Take the file and database backups as close together in time as you can.
#!/usr/bin/env bash
set -euo pipefail
TARIH=$(date +%F)
HEDEF="$HOME/yedek/$TARIH"
mkdir -p "$HEDEF"
# 1) Veritabani
mysqldump --single-transaction --quick \
-h 192.0.2.10 -u yedek -p"$DB_PAROLA" uygulama_db \
| gzip > "$HEDEF/uygulama_db.sql.gz"
# 2) Dosyalar
rsync -az -e "ssh -p 2022" \
[email protected]:/ "$HEDEF/dosyalar/"
# 3) 14 gunden eski yedekleri sil
find "$HOME/yedek" -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +
echo "Yedek tamam: $HEDEF"Testing the restore#
- Once a month, restore the backup into an empty service; do not touch production.
- Watch the console on first boot after the restore: missing plugins or incompatible versions show up here.
- Note how long it takes. You can only say 'I can be back up within an hour' after measuring it once.
- Track the archive size: a backup that suddenly shrinks is usually a copy that was cut short.
Troubleshooting
Restored world is corrupt / chunks missing
The backup was taken while the server was running, without save-off.
Take backups with the server stopped, or after save-off/save-all.
SFTP connection refused
Using the default port 22 and a bare username.
Use the port from the panel's SFTP card and the full user.serverid username.
Backup file is far smaller than expected
The copy was interrupted, or the disk filled up.
Check the script's exit code (set -e) and verify integrity by actually extracting the archive.
Was this guide helpful?
Feedback goes straight to the team that maintains this guide.
Related Guides
Initial Security Hardening for Linux VDS/VPS Servers
Essential hardening checklist for fresh Ubuntu/Debian servers: SSH keys, UFW firewall, and fail2ban brute-force defense.
Creating Auto-Restarting Background Services with Systemd
How to configure systemd unit files to automatically restart Node.js, Python, Go, or game scripts on reboot and crash.

