Automatisierte Updates und Backups mit Bashscript

Bashscript-wordpress-wp-cli
Bash-Script für Wordpress-Updates und Wordpress-Backups

In zwei Artikeln habe ich bereits das Vorgehen beschrieben, um WordPress-Updates und -Backups per WordPress-Kommandozeile (WP-CLI) durchzuführen. In diesem Artikel werden wir das Vorwissen nutzen, um daraus ein Shellskript zu erstellen. Dieser Artikel richtet sich an technisch versiertere Leser (oder auch Leute, die Lust haben sich damit auseinanderzusetzen).

Voraussetzungen

Voraussetzung für die Nutzung ist ein Hostingpaket mit SSH-Zugang. Alternativ kann man das ganze natürlich lokal auf dem Rechner nutzen. Außerdem gehe ich davon aus, dass das WordPress-Kommandozeilentool (WP-CLI) bereits installiert ist (das ist auch alternativ in meinem vorherigen Beitrag zu den WordPress-Updates beschrieben).

Dabei habe ich in meinem Hostingbereich ein Verzeichnis „backups“ und ein Verzeichnis für die WordPress-Instanz, z. B. „emsgold.de“. Das kann bei euch anders aussehen, ist aber in den meisten Fällen ähnlich.

Wer die letzten meine Artikel zu den Themen WordPress-Updates und WordPress-Backups kennt, für den ist das ganze jetzt kein Hexenwerk mehr. Die benötigten Befehle werden in ein Bashscript übertragen. Auch wenn man – wie ich – nicht sonderlich geübt in sowas ist, ist das relativ einfach zu erstellen.

#!/bin/bash
echo "WP BACKUP AND UPDATE"

# Überprüfung der übergegebenen Parameter
if [ $# -eq 0 ];then
    echo "Bitte gebe den Pfad zur WP-Installation und zum Backups-Ordner an!"
    exit 1
elif [ $# -eq 1 ];then
    echo "Bitte gebe zum Backups-Ordner an!"
    exit 1
fi

wp="wp-cli/wp-cli.phar" #Pfad zur ausführbaren wp-cli.phar

FILENAME="$(date +%y-%m-%d)_${1///}"

#Backups durchführen
DB_EXPORT="$($wp db export $FILENAME.sql --path=$1)"
echo "Erstelle Backup in $FILENAME.tar.gz."
tar -czf $FILENAME.tar.gz $1 $FILENAME.sql
mv $FILENAME.tar.gz $2
rm $FILENAME.sql 
echo "Backup erstellt und in $2 verschoben."

# Updates allgemein
CORE_UPDATE="$($wp core update --path=$1)"
PLUGIN_UPDATES="$($wp plugin update --all --path=$1)"
THEME_UPDATES="$($wp theme update --all --path=$1)"

# Übersetzungen updaten
CORE_LANGUAGE_UPDATE="$(${wp} language core update --path=${1})"
PLUGIN_LANGUAGE_UPDATES="$(${wp} language plugin update --all --path=${1})"
THEME_LANGUAGE_UPDATES="$(${wp} language theme update --all --path=${1})"

#Statusmail

echo -e "Hej,
hier dein automatischer Report des WP-CLI-Skripts für Backups deiner Daten und Updates von WordPress-Core, Plugins und Themes von $1.

Backup:
${DB_EXPORT}
 
Core-Updates:
${CORE_UPDATE}
 
Plugin-Updates:
${PLUGIN_UPDATES}
 
Theme-Updates:
${THEME_UPDATES}

Language-Updates:
Core:       ${CORE_UPDATE}
Plugins:    ${PLUGIN_UPDATES}
Themes:     ${THEME_UPDATES}

Viele Grüße,
Sandra von emsgold.de"

Anmerkungen zum Skript:

ZeilenInfo
4 – 11Anzahl der übergebenen Parameter überprüfen
13Pfad zur durchführbaren wp-cli.phar (nach Bedarf anpassen)
17 – 23Backup erstellen und in das Backup-Verzeichnis verschieben
25 – 33Updates über WP-CLI durchführen
35 ff.Statusausgabe zu Backups und Updates

Anwendung

In der obigen Form müssen beim Aufruf des Skripts zwei Parameter mitgegeben werden: Der Pfad zur WordPress-Installation und der Pfad zum Backups-Ordner. Somit kann der Aufruf nach dem Speichern des Skripts auf deinem Webspace speicherst über den Aufruf

bash scriptname pfad/zur/wp-installation/ pfad/zum/backups-vz/

erfolgen. Alternativ kann man die die Scriptdatei auch ausführbar machen über chmod +x scriptname . Danach ist diese dann über ./scriptname pfad/zur/wp-installation/ pfad/zum/backup-vz/ ausführbar.

Achtung

Anwendung erfolgt auf eigene Gefahr. Man sollte sich unbedingt bewusst sein, dass dabei auch einiges schief gehen kann.

Optimierung

Theoretisch sind noch einige Spielereien möglich, z. B. das Abfangen von Fehlern. Alternativ kann man auch das Skript anpassen, damit nur geprüft wird, ob Updates vorliegen und diese dann nach Bedarf manuell einspielen.

In diesem Artikel möchte ich nur die grundlegende Idee vorstellen, die jeder nach Bedarf für sich anpassen kann. Meine zugehörige Datei findet ihr auch bei GitHub. Viel Spaß damit!

Schreibe einen Kommentar

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