WordOps Backup Strategien - Das SuperRad Backup Script 🌟

Da läuft dein WordOps-Stack wie geschmiert, die WordPress-Sites performen bombastisch mit Nginx und Redis, und dann... BUMM! 💥 Ein kritisches Update steht an oder schlimmer - ein Hardware-Problem.

WordOps Backup Strategien - Das SuperRad Backup Script 🌟
Photo by benjamin lehman / Unsplash

Der ultimative Guide für SysOps 🚀

Namasté liebe SysOps! Heute tauchen wir tief in die Welt der WordOps-Backups ein - denn nichts ist schlimmer als ein Server-Crash ohne Backup! 😱

Du kennst das sicher: Da läuft dein WordOps-Stack wie geschmiert, die WordPress-Sites performen bombastisch mit Nginx und Redis, und dann... BUMM! 💥 Ein kritisches Update steht an oder schlimmer - ein Hardware-Problem. Ohne vernünftige Backup-Strategie wird aus einem entspannten Sonntag schnell ein 24-Stunden-Marathon der Panik.

Die bittere Wahrheit über WordOps Backups 📋

Hier kommt die erste Überraschung: WordOps hat keinen nativen "wo site backup" Befehl! 😲 Ja, du hast richtig gelesen. Während du mit wo site list alle deine Sites auflistest und mit wo site create neue WordPress-Installationen zauberst, bleibt die Backup-Funktion ein weißer Fleck auf der WordOps-Landkarte.

💡 Info-Box: Was WordOps automatisch macht
WordOps erstellt nur während Updates automatische Backups:Nginx-Konfigurationen werden gesichertDas htdocs-Verzeichnis wird vor Updates verschobenDatenbank-Dumps werden in /var/lib/wo-backup/mysql erstellt

Das war's aber auch schon! 🤷‍♂️

Die Community schlägt zurück! 💪

Zum Glück ist die WordOps-Community nicht faul gewesen. Während wir auf offizielle Backup-Features warten (geplant, aber noch nicht da), haben clevere SysOps bereits geniale Lösungen entwickelt:

1. Das SuperRad Backup Script 🌟

Das SuperRad Script ist der Klassiker unter den WordOps-Backup-Lösungen. Es macht genau das, was ein gutes Backup-Script können muss:

  • Komprimierte tar.gz-Archive der Site-Dateien
  • Ausschluss von WordPress Core-Dateien (spart Platz!)
  • WP-CLI Integration für saubere Datenbank-Exports
  • Separate Sicherung der wp-config.php

So installierst du das SuperRad Script:

# Scripts-Verzeichnis erstellen
mkdir -p /scripts
cd /scripts

# Script erstellen
nano wo-backup.sh
⚠️ Achtung!
Das Original-Repository ist leider nicht mehr verfügbar, aber der Code ist dokumentiert und funktioniert perfekt. Ich zeige dir gleich, wie du es selbst implementierst! 😉

2. Duplicacy-basierte Power-Lösungen 🔥

Für die Performance-Junkies unter uns gibt es Scripts mit Duplicacy-Integration:

  • zstd-Komprimierung (schneller als gzip!)
  • Mehrere Remote-Speicher gleichzeitig
  • Automatische Retention-Policies
  • Cloud-Integration mit 40+ Providern

3. WordPress-Plugin Kombos 🎯

Die pragmatische Lösung für viele SysOps:

UpdraftPlus - Der Community-Favorit:

  • Perfekte WordOps-Kompatibilität
  • WP-CLI Integration
  • MainWP-Support für Multi-Site Management
  • Automatische Cloud-Uploads

WPVivid - Ideal für Migrationen:

  • Server-zu-Server Transfers
  • Backup-Splitting für große Sites
  • Auto-Migration Features

Praxis-Guide: SuperRad Script Implementierung 🛠️

Zeit für die Praxis! Hier ist der komplette SuperRad-Code zum Copy & Paste:

#!/bin/bash
# SuperRad WordOps Backup Script
# Usage: /scripts/wo-backup.sh yourdomain.com

SITE=$1
DATEFORM=$(date -d "today" +"%Y%m%d%H%M")
BACKUPPATH="/tmp/backups/$DATEFORM"
SITESBASE="/var/www/$SITE/htdocs"

if test -z "$SITE"; then
    echo "ERROR: no domain informed!"
    exit 1
fi

if [ ! -e "/var/www/$SITE/wp-config.php" ]; then
    echo "ERROR: $SITE does not appear to be a valid WordPress!"
    exit 1
fi

# Make sure the backup folder exists
mkdir -p "$BACKUPPATH"
cd "$SITESBASE" || exit

echo "Backing up files to $BACKUPPATH..."
tar -czf "$BACKUPPATH/$DATEFORM-$SITE.tar.gz" --exclude-from="/scripts/exclusions.txt" -C "$SITESBASE" .

# Backup WordPress config file
cp "/var/www/$SITE/wp-config.php" "$BACKUPPATH"

echo "Backing up WordPress database..."
wp db export "$BACKUPPATH/$DATEFORM-$SITE.sql" \
   --single-transaction \
   --quick \
   --lock-tables=false \
   --allow-root \
   --skip-themes \
   --skip-plugins

gzip < "$BACKUPPATH/$DATEFORM-$SITE.sql" > "$BACKUPPATH/$DATEFORM-$SITE.sql.gz"
rm "$BACKUPPATH/$DATEFORM-$SITE.sql"

exit 0

Und die Exclusions-Datei:

# /scripts/exclusions.txt
wp-admin
wp-includes
wp-content/index.php
wp-content/upgrade
wp-content/cache
wp-content/*.zip
wp-content/*.gz
wp-content/plugins/index.php
wp-content/themes/index.php
index.php
license.txt
readme.html
wp-activate.php
wp-blog-header.php
wp-comments-post.php
wp-config-sample.php
wp-cron.php
wp-links-opml.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
wp-trackback.php
xmlrpc.php
🎉 Pro-Tipp!
Das Script schließt automatisch alle WordPress Core-Dateien aus. Das spart bis zu 80% Speicherplatz bei deinen Backups! 🚀

Batch-Backup für alle Sites 🔄

Der wahre Power-Move? Alle deine WordOps-Sites auf einmal sichern:

#!/bin/bash
# Batch Backup Script

BACKUP_DIR="/var/backups/wordops-upgrade"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="$BACKUP_DIR/backup_${DATE}.log"

echo "=== WordOps Batch Backup gestartet: $(date) ===" | tee -a $LOG_FILE

# Alle Sites sichern
for site in $(wo site list | grep -v "SiteName" | grep -v "^$" | awk '{print $1}'); do
    echo "Sichere Site: $site" | tee -a $LOG_FILE
    
    /scripts/wo-backup.sh $site 2>&1 | tee -a $LOG_FILE
    
    if [ $? -eq 0 ]; then
        echo "✓ Backup für $site erfolgreich" | tee -a $LOG_FILE
    else
        echo "✗ Backup für $site fehlgeschlagen!" | tee -a $LOG_FILE
    fi
    
    echo "----------------------------------------" | tee -a $LOG_FILE
done

echo "=== Backup abgeschlossen: $(date) ===" | tee -a $LOG_FILE

Die 3-2-1 Backup-Regel für WordOps 📊

Echte SysOps setzen nicht nur auf eine Backup-Methode! Die bewährte 3-2-1 Regel:

  • 3 Kopien deiner Daten
  • 2 verschiedene Medien (lokale + Cloud)
  • 1 Kopie offsite (anderer Standort)

Empfohlene Multi-Layer-Strategie:

  1. WordPress-Level: UpdraftPlus für tägliche Backups
  2. Server-Level: SuperRad Script für wöchentliche Full-Backups
  3. Cloud-Level: rclone für automatische Offsite-Sicherung
  4. Database-Level: Separate MySQL-Dumps als Fallback
💰 Budget-Tipp!
Du brauchst nicht die teuersten Cloud-Lösungen! Google Drive, Dropbox oder sogar ein zweiter VPS reichen völlig aus. Hauptsache, die Daten sind nicht am gleichen Ort! 😄

Monitoring & Automation 🤖

Ein Backup ohne Monitoring ist wie ein Auto ohne Benzinuhr - irgendwann bleibst du liegen!

Cron-Jobs für Automatisierung:

# Tägliche Database Backups um 2 Uhr nachts
0 2 * * * /scripts/db-backup.sh

# Wöchentliche Full-Backups sonntags um 3 Uhr  
0 3 * * 0 /scripts/full-backup.sh

# Monatliche Archive am 1. des Monats
0 4 1 * * /scripts/monthly-archive.sh

Notification-Setup mit Telegram:

# In dein Backup-Script einbauen
TELEGRAM_BOT_TOKEN="your_bot_token"
CHAT_ID="your_chat_id"

# Success notification
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
     -d chat_id=$CHAT_ID \
     -d text="✅ Backup completed for $SITE"

# Error notification  
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
     -d chat_id=$CHAT_ID \
     -d text="❌ Backup FAILED for $SITE"

Pre-Upgrade Backup Strategie 🔧

Besonders wichtig vor kritischen Updates (wie MariaDB-Upgrades):

🚨 Critical Info-Box: Pre-Upgrade Checklist
Vor jedem größeren Update:Vollständige Site-Backups aller WordOps-InstallationenSeparate Datenbank-Dumps pro SiteNginx- und WordOps-Konfigurationen sichernSSL-Zertifikate und Keys backupBackup-Integrität testen!

Upgrade-optimiertes SuperRad Script:

# Modifikation für strukturierte Upgrade-Backups
BACKUPPATH="/var/backups/wordops-upgrade/sites"
DBBACKUPPATH="/var/backups/wordops-upgrade/databases"

# Backup Summary erstellen
echo "=== Backup Summary für $SITE ===" > "$BACKUPPATH/${DATEFORM}-${SITE}-summary.txt"
echo "Date: $(date)" >> "$BACKUPPATH/${DATEFORM}-${SITE}-summary.txt"
echo "Site: $SITE" >> "$BACKUPPATH/${DATEFORM}-${SITE}-summary.txt"

Restore-Strategien: Wenn's brennt 🔥

Ein Backup ist nur so gut wie seine Wiederherstellung! Hier die wichtigsten Restore-Szenarien:

Einzelne Site wiederherstellen:

# Files restore
cd /var/www/
tar -xzf backup-files.tar.gz

# Database restore  
mysql -u root -p site_db < backup-database.sql

# Services restart
systemctl restart nginx php8.1-fpm mysql

Kompletter Server-Restore:

# WordOps reinstallieren
wget -qO wo wops.cc && sudo bash wo

# Sites aus Backup recreate
for site in $(cat backup-sites-list.txt); do
    wo site create $site --wp
    # Dann Files + DB restore
done

Alternative Lösungen im Überblick 🛡️

Falls das SuperRad Script nicht dein Ding ist, hier weitere bewährte Optionen:

1. rclone + Custom Scripts

  • Unterstützt 40+ Cloud-Provider
  • Verschlüsselung built-in
  • Bandbreiten-Limiting
  • Perfect für große Sites

2. Duplicity + GPG

  • Inkrementelle Backups
  • GPG-Verschlüsselung
  • Bandwidth-efficient
  • Ideal für Compliance-Anforderungen

3. WordPress-Plugin Combos

  • UpdraftPlus + MainWP für Multi-Site
  • BackWPup für Enterprise-Features
  • WPVivid für einfache Migrationen
🎯 Pro-Tipp für Agencies!
Du managst mehrere Kunden? MainWP + UpdraftPlus ist die Killer-Combo! Centralized Dashboard, automatische Backups, Client-Reports - alles aus einer Hand! 💼

Performance-Optimierungen 🚄

Backup-Performance kann zum Bottleneck werden. Hier die wichtigsten Optimierungen:

Komprimierung optimieren:

# Standard gzip
tar -czf backup.tar.gz /path/to/site

# Parallel gzip (pigz) für Multicore
tar -cf - /path/to/site | pigz > backup.tar.gz  

# zstd für beste Performance
tar --use-compress-program=zstd -cf backup.tar.zst /path/to/site

Datenbank-Performance:

# Single-transaction für InnoDB
wp db export --single-transaction --quick --lock-tables=false

# Parallel dumps für große DBs
mydumper --host=localhost --user=root --password=pass \
         --database=wpsite --compress --threads=4

Network-Optimierung:

# Bandwidth limiting für Produktiv-Server
rsync --bwlimit=1000 backup.tar.gz remote:/backups/

# Compression für Remote-Transfer  
rsync -avz --compress backup/ remote:/backups/

Troubleshooting: Wenn's mal klemmt 🔧

Die häufigsten Backup-Probleme und ihre Lösungen:

Problem: "wp: command not found"

# WP-CLI installieren/reparieren
wget -O wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp
sudo mv wp /usr/local/bin/

Problem: MySQL Connection Errors

# Permissions checken
wp db check --allow-root --path=/var/www/site/htdocs

# MySQL Service Status
systemctl status mysql

Problem: Backup-Archive beschädigt

# Archive-Integrität testen
tar -tzf backup.tar.gz > /dev/null && echo "OK" || echo "CORRUPTED"

# Backup-Validierung implementieren
for archive in $(find /backups -name "*.tar.gz"); do
    tar -tzf "$archive" > /dev/null 2>&1 && echo "✅ $archive" || echo "❌ $archive"
done

Security Best Practices 🔐

Backups sind auch ein Sicherheitsrisiko! Hier die wichtigsten Security-Aspekte:

Backup-Verschlüsselung:

# GPG-Verschlüsselung
gpg --symmetric --cipher-algo AES256 backup.tar.gz

# rclone mit Crypt-Backend
rclone config # Crypt remote einrichten
rclone copy backup.tar.gz encrypted-remote:

Access-Control:

# Backup-Directories absichern  
chmod 700 /var/backups/
chown root:root /var/backups/

# Scripts vor anderen Usern schützen
chmod 750 /scripts/
chown root:www-data /scripts/

Retention & Cleanup:

# Alte Backups automatisch löschen
find /var/backups -name "*.tar.gz" -mtime +30 -delete

# Log-Rotation für Backup-Logs
logrotate -f /etc/logrotate.d/wo-backup

Kosten-Nutzen-Analyse 💸

Backup-Storage muss nicht teuer sein! Hier ein Überblick:

Provider Kosten/GB/Monat Pro Contra
Google Drive ~$0.02 Einfach, GUI Geschwindigkeit
AWS S3 Glacier ~$0.004 Günstig Restore-Zeit
Backblaze B2 ~$0.005 API-friendly Weniger bekannt
Eigener VPS ~$0.01 Kontrolle Maintenance
💡 Spar-Tipp!
Nutze verschiedene Storage-Tiers! Aktuelle Backups auf schnellem Storage, ältere Archive auf Glacier. Kann bis zu 90% Kosten sparen! 📈

Fazit: Backup-Nirvana erreicht! 🧘‍♂️

WordOps mag keine native Backup-Funktion haben, aber mit den Community-Lösungen bist du bestens gerüstet:

Die perfekte WordOps-Backup-Strategie:

  • SuperRad Script für tägliche Site-Backups
  • UpdraftPlus als WordPress-Level Fallback
  • rclone für automatische Cloud-Synchronisation
  • Monitoring & Alerting damit du immer Bescheid weißt
  • Regelmäßige Restore-Tests - ein ungetestetes Backup ist wertlos!

Remember: Ein Backup pro Tag hält den Herzinfarkt fern! 😄

Die Investition in eine solide Backup-Strategie zahlt sich immer aus. Lieber ein paar Stunden Setup als schlaflose Nächte bei einem Datenverlust. Deine zukünftige gestresste Version wird es dir danken! 🙏

Hast du eigene Backup-Tricks oder Erfahrungen mit WordOps? Teile sie gerne in den Kommentaren - die Community lebt vom Wissensaustausch!

Namasté und happy backing up!


P.S.: Wenn dir dieser Guide geholfen hat, teile ihn gerne mit anderen SysOps. Geteiltes Wissen ist doppeltes Wissen! 🤝