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:
Zeilen | Info |
---|---|
4 – 11 | Anzahl der übergebenen Parameter überprüfen |
13 | Pfad zur durchführbaren wp-cli.phar (nach Bedarf anpassen) |
17 – 23 | Backup erstellen und in das Backup-Verzeichnis verschieben |
25 – 33 | Updates ü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!