Illustration för Administration
← Tillbaka till artiklar
Administration2026-03-12·13 min läsning

Backup-strategier som Faktiskt Fungerar – Mer än 3-2-1

En praktisk guide till backup-strategier som håller i verkligheten. Automatisering, testning, offsite-lagring och katastrofåterställning.

Backuper som aldrig testats är värdelösa

Den hårda sanningen: en backup du aldrig har testat att återställa är inte en backup — det är ett antagande. Jag har sett organisationer förlora veckor av data för att de litade på backup-jobb som tyst hade slutat fungera månader tidigare.

En fungerande backup-strategi har tre delar: automatiserad säkerhetskopiering, offsite-lagring och regelbundna restore-tester. Missar du en av dem har du en sårbarhet.

3-2-1-regeln — och varför den inte räcker

3-2-1 är grunden: 3 kopior, 2 olika media, 1 offsite. Men den säger ingenting om hur ofta du backupar, hur snabbt du kan återställa eller om backupen faktiskt går att använda.

En modernare approach: 3-2-1-1-0.

  • 3 kopior av data
  • 2 olika lagringstyper
  • 1 offsite
  • 1 offline (air-gapped — immun mot ransomware)
  • 0 verifierade fel i senaste restore-testet

Automatisera med BorgBackup

BorgBackup är det bästa verktyget för Linux-serverbackuper. Det deduplicerar data (identiska block sparas bara en gång), komprimerar och krypterar — allt automatiskt.

# Installera
sudo apt install borgbackup -y

# Initiera repository (lokalt eller remote)
borg init --encryption=repokey /backup/borg-repo

# Skapa backup
borg create --stats --progress \
  /backup/borg-repo::srv-{now:%Y%m%d-%H%M%S} \
  /var/www \
  /etc \
  /home \
  --exclude '*.log' \
  --exclude '*.tmp' \
  --exclude 'node_modules' \
  --exclude '__pycache__'

# Output:
# Original size: 12.5 GB
# Deduplicated size: 340 MB  ← Bara ändrade data sparas!

# Rensa gamla arkiv
borg prune \
  --keep-daily=7 \
  --keep-weekly=4 \
  --keep-monthly=6 \
  /backup/borg-repo

Databasbackup — gör det rätt

Kopiera aldrig databasfiler direkt. Databaser som MySQL och PostgreSQL skriver kontinuerligt till disk — en filkopia kan ge en korrupt backup. Använd alltid databasverktygets egna dumpverktyg.

#!/bin/bash
# db-backup.sh — Daglig databasbackup

TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/databases"

# MySQL/MariaDB
mysqldump --single-transaction --routines --triggers \
  --all-databases | gzip > "$BACKUP_DIR/mysql_$TIMESTAMP.sql.gz"

# PostgreSQL
pg_dumpall | gzip > "$BACKUP_DIR/postgres_$TIMESTAMP.sql.gz"

# Kontrollera att backupen inte är tom
MIN_SIZE=1000  # Minst 1 KB
for file in "$BACKUP_DIR"/*_$TIMESTAMP.sql.gz; do
  size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file")
  if [ "$size" -lt "$MIN_SIZE" ]; then
    echo "VARNING: $file är misstänkt liten ($size bytes)"
    # Skicka alert
  fi
done

# Rensa äldre än 30 dagar
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +30 -delete

Offsite med rclone

rclone synkar dina backuper till S3-kompatibel lagring (Backblaze B2, Wasabi, AWS S3). Det är som rsync för molnlagring.

# Installera
curl https://rclone.org/install.sh | sudo bash

# Konfigurera (interaktivt)
rclone config
# Välj provider, ange API-nycklar

# Synka backuper till molnet
rclone sync /backup/borg-repo remote:server-backups/borg \
  --transfers 4 \
  --progress

# Schemalägg i crontab
# 03:30 varje dag — efter att lokala backuper kört kl 03:00
30 3 * * * rclone sync /backup/borg-repo remote:server-backups/borg --log-file /var/log/rclone.log

Automatisk restore-test

Backuper som aldrig testats ger en falsk trygghet. Automatisera restore-tester månatligen.

#!/bin/bash
# test-restore.sh — Månatlig verifiering

RESTORE_DIR="/tmp/restore-test"
mkdir -p "$RESTORE_DIR"

# Återställ senaste Borg-arkivet
LATEST=$(borg list /backup/borg-repo --last 1 --short)
borg extract /backup/borg-repo::$LATEST --target "$RESTORE_DIR"

# Verifiera filintegritet
ORIGINAL_COUNT=$(find /var/www -type f | wc -l)
RESTORED_COUNT=$(find "$RESTORE_DIR/var/www" -type f | wc -l)

if [ "$ORIGINAL_COUNT" -eq "$RESTORED_COUNT" ]; then
  echo "OK: Filantal matchar ($ORIGINAL_COUNT filer)"
else
  echo "FEL: Original=$ORIGINAL_COUNT, Restored=$RESTORED_COUNT"
  # Skicka alert
fi

# Testa databasåterställning
gunzip -c /backup/databases/mysql_latest.sql.gz | \
  mysql --defaults-file=/root/.my.cnf test_restore_db

TABLES=$(mysql test_restore_db -e "SHOW TABLES" | wc -l)
echo "Databasåterställning: $TABLES tabeller"

# Rensa
rm -rf "$RESTORE_DIR"
mysql -e "DROP DATABASE IF EXISTS test_restore_db"

Sammanfattning

En backup-strategi som fungerar kräver automatisering, redundans och testning. Använd BorgBackup för effektiva lokala backuper, rclone för offsite-synk, och automatiserade restore-tester för verifiering. Det tar en eftermiddag att sätta upp — och kan spara veckor av arbete vid en incident.

Säkra din server ytterligare med vår guide om Linux serversäkerhet och skydda mot DDoS med vår DDoS-skyddsguide.