WordPress-Backup-Skript mit bup (bup remote)

English Deutsch

Dieses Skript sichert eine WordPress-Installation (inklusive Datenbank, Dateien & Verzeichnisse, exklusive Cache) auf einen bup- Remote-Server, der auf 10.1.2.3 läuft. Du musst sicherstellen, dass du passwortlosen Zugriff auf diesen Server hast.

Es basiert auf der automatisierten Extraktion von Datenbank-Host, Benutzername & Passwort, siehe How to grep for WordPress DB_NAME, DB_USER, DB_PASSWORD and DB_HOST in wp-config.php für weitere Details.

wordpress-backup-script-using-bup-bup-remote.sh
#!/bin/bash
export NAME=$(basename $(pwd))
export BUP_DIR=/var/bup/$NAME.bup
export REMOTE_BUP_DIR=/bup-backups/$NAME.bup
export REMOTE_SERVER=10.1.2.3
export BUP_REMOTE=$REMOTE_SERVER:$REMOTE_BUP_DIR

# Initialisierung
bup -d $BUP_DIR init -r $BUP_REMOTE
# MariaDB-Dump speichern (MariaDB-Konfiguration aus wp-config.php extrahieren)
DB_NAME=$(grep -oP "define\(['\"]DB_NAME['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
DB_USER=$(grep -oP "define\(['\"]DB_USER['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
DB_PASSWORD=$(grep -oP "define\(['\"]DB_PASSWORD['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
DB_HOST=$(grep -oP "define\(['\"]DB_HOST['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" wp-config.php)
mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASSWORD $DB_NAME | bup -d $BUP_DIR split -n $NAME-$DB_NAME.sql

# WordPress-Verzeichnis speichern
bup -d $BUP_DIR index --exclude wp-content/cache --exclude wp-content/uploads/cache . && bup save -r $BUP_REMOTE -9 --strip-path $(pwd) -n $NAME .

# OPTIONAL: par2-Informationen hinzufügen
#   Dies wird nur für Backups auf unzuverlässigem Speicher oder für extrem kritische Backups empfohlen
#   Wenn du bereits Bitrot-Schutz hast (wie BTRFS mit regelmäßigem Scrubbing), kann dies übertrieben sein.
# Diese Zeile einkommentieren zum Aktivieren:
# bup on $REMOTE_SERVER -d $REMOTE_BUP_DIR fsck -g

# OPTIONAL: Alte Backups bereinigen
bup on $REMOTE_SERVER -d $REMOTE_BUP_DIR prune-older --keep-all-for 1m --keep-dailies-for 6m --keep-monthlies-for forever -9 --unsafe

Check out similar posts by category: Bup, Wordpress