Einfaches WordPress Backup via Bash-Script

Bevor ich beim nächsten Fall schon wieder alles einzeln zusammensuche, hier eine kleine und schnelle Copypasta aus dem Admin-Alltag:

Sicherung einer WordPress-Instanz

Achtung: WordPress wird damit zwar vollständig eingepackt und die Datenbank gesichert, aber es gibt keine Fehlerbehandlung (Datei existiert bereits …) und auch keinen CSRF-Schutz. Die Kommandozeilen-Argumente werden un-escaped ausgeführt.

⚠ Das Backup landet automatisch in ~/priv wenn man die letzten beiden Zeilen nicht anpasst.

Syntax:

./wordpress-backup.sh /var/www/path-to-wordpress

Code:

#!/bin/bash
#
# SEHR einfaches WordPress-Backup

# Commandline-Argumente da?
if [ $# -eq 0 ]
  then
    echo "SYNTAX: wordpress-backup.sh <path-to-WordPress>"
    exit 1
fi

# Verzeichnis da?
if [ ! -d $1 ]
  then
    echo "Directory $1 does not exist."
    exit 1
fi

# Sinnvolle Dateinamen zusammenbauen
db_backup_name="wp-db-backup-"`date "+%Y%m%d"`".sql.gz"
wpfiles_backup_name="wp-files-backup-"`date "+%Y%m%d"`

# Zugangsdaten aus der config suchen
db_name=`grep DB_NAME $1/wp-config.php | cut -d \' -f 4`
db_username=`grep DB_USER $1/wp-config.php | cut -d \' -f 4`
db_password=`grep DB_PASSWORD $1/wp-config.php | cut -d \' -f 4`

# MySQLdumb, gzip
mysqldump --opt -u$db_username -p$db_password $db_name | gzip > ~/priv/$db_backup_name

# WordPress einpacken
tar -czvf ~/priv/$wpfiles_backup_name.tar.gz $1

# Oder als zip:
#zip -r ~/priv/$wpfiles_backup_name $1

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.