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.
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/mysqlerstellt
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:
- WordPress-Level: UpdraftPlus für tägliche Backups
- Server-Level: SuperRad Script für wöchentliche Full-Backups
- Cloud-Level: rclone für automatische Offsite-Sicherung
- 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! 🤝