Beginner7 minUpdated: 2026-09-13

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
On This Page
All Guides
Reading progress

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

Yerel terminal
# 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.

Günlük yedek betiği (yerel makine veya ayrı bir sunucu)
#!/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

Symptom

Restored world is corrupt / chunks missing

Cause

The backup was taken while the server was running, without save-off.

Fix

Take backups with the server stopped, or after save-off/save-all.

Symptom

SFTP connection refused

Cause

Using the default port 22 and a bare username.

Fix

Use the port from the panel's SFTP card and the full user.serverid username.

Symptom

Backup file is far smaller than expected

Cause

The copy was interrupted, or the disk filled up.

Fix

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