Backup eurer WordPress-Installation erstellen

Backup eures WordPress-Blogs? Einfach erklärt mit Linux-Bordmitteln.

Update: Backup der Datenbank hinzugefügt.
Update: Ich habe Bash-Code der alte Backups automatisch löscht hinzugefügt.

Hi.
Wenn ihr wie ich eure WordPress-Installation auf einem Raspberry Pi habt wollt ihr sicher von Zeit zu Zeit mal ein Backup machen um sicherzugehen das nach dem nächsten Systemcrash eures Pi’s oder nach einem Stromausfall nicht euer schöner Blog verloren geht.

Ich erstellte mir dazu ein Bash-Skript. Dieses Skript erstellt zwei tar.bz2-Archive, eines enthält die WordPress-Dateien aus denen mein Blog besteht, das andere ein Backup meiner MySQL-Datenbank. Das Skript kontrolliert ob bereits 14 oder mehr Backups vorhanden sind. Falls mehr als 14 Backups vorhanden sind, werden solange beginnend mit dem ältesten der Backups die Backups gelöscht bis nur noch 14 Backups im Zielordner sind. Ich verwende hierbei zwei Zielordner: einen Zielordner für meine WordPress-Dateien und einen Zielordner für meine MySQL-Datenbank. Jeder Ordner wird einzeln darauf kontrolliert ob maximal 14 Archive in ihm liegen.

Loggt euch zuerst in die Shell eures Pi’s ein. Ich nehme dazu immer SSH um mich über mein LAN auf dem Pi einzuloggen. Dann erstellt ihr die Zielverzeichnisse für eure Backups:

cd
mkdir "www-backup"
mkdir "www-mysqldump"

Danach erstellt ihr in eurem Heimverzeichnis ein neues Bash-Skript.
Dieses könnt ihr dann so erzeugen:

nano ~/www-backup.sh

Danach öffnet sich der Editor nano mit einer noch leeren Datei.
Kopiert folgenden Text in euer Terminal:

#!/bin/bash
echo "Erstelle ein Backup der Website....bitte warten..."
DINFO=`date +%F`
SQLPASS=EUER-MYSQL-ROOT-PASSWORT
tar -vcjf /home/pi/www-backup/$DINFO-www-backup.tar.bz2 "/usr/share/nginx/www/"
echo "Backup erstellt."
echo "Lösche alle Backups der Website bis auf die letzten 14 Backups...bitte warten..."
ls -tr /home/pi/www-backup/*-www-backup.tar.bz2 | head -n -14 | xargs --no-run-if-empty rm
echo "Alte Backups der Website wurden gelöscht."
echo "Erstelle Backup der MySQL Datenbank...bitte warten..."
mysqldump -u root -p$SQLPASS --all-databases > /home/pi/www-mysqldump/$DINFO-www-mysqldump.sql
tar -vcjf "/home/pi/www-mysqldump/$DINFO-www-mysqldump.tar.bz2" "/home/pi/www-mysqldump/$DINFO-www-mysqldump.sql"
rm /home/pi/www-mysqldump/$DINFO-www-mysqldump.sql
echo "Backup der MySQL Datenbank erstellt."
echo "Lösche alle Backups der MySQL Datenbank bis auf die letzten 14 Backups...bitte warten..."
ls -tr /home/pi/www-mysqldump/*-www-mysqldump.tar.bz2 | head -n -14 | xargs --no-run-if-empty rm
echo "Alte Backups der MySQL Datenbank wurden gelöscht."
exit 1

Dieses Skript erstellt zwei .tar.bz2 Archive in /home/pi/www-backup und /home/pi/www-mysqldump. Wenn ihr andere Verzeichnisse benutzen wollt, dann müsst ihr die Dateipfade auf eure gewünschten Verzeichnisse anpassen. In der Deklarierung der Variable SQLPASS in der dritten Zeile müsst ihr das Passwort für euren MySQL root Benutzer eintragen. Das ist jedoch nicht das Passwort des Linux Superusers root. An diese Stelle gehört das Passwort des MySQL-Benutzers root, das ihr bei der Einrichtung von MySQL vergeben habt. Die Archive werden nach dem Schema YYYY-MM-DD-www-*.tar.bz2 benannt. Wenn ihr den Webserver nginx benutzt wird diese Lösung perfekt funktionieren. Bei anderen Servern wie den Apache muss ein ganz anderes Verzeichnis komprimiert werden. Bei Apache sollte dies normalerweise „/var/www“ sein. Lest dazu am besten die Dokumentation eures Webservers. Jetzt drückt Strg+O, bestätigt den Schreibvorgang mit Enter und drückt Strg+X. Das Skript sollte jetzt fertig geschrieben sein. Ihr müsst dieses Skript noch ausführbar machen. Gebt

chmod +x ~/www-backup.sh

ein. Das Skript ist jetzt ausführbar. Führt das Skript mit

./www-backup.sh

aus. Mein Pi braucht ein bis zwei Minuten dafür. Wenn sich jetzt die Backups in /home/pi/www-backup und /home/pi/www-mysqldump befinden, dann funktioniert das Backup.

Um dieses Skript zu automatisieren legen wir einen cronjob an.
Gebt crontab -e in eure Shell ein und führt es aus. Ihr seit jetzt im nano Editor. Fügt am Ende der Tabelle eine neue Zeile ein und kopiert folgendes dort hinein:

0 23 * * * bash /home/pi/www-backup.sh &

Dieses Skript sorgt dafür das um 11 Uhr Abends jeden Tag ein komprimiertes Archiv erstellt wird. Dieses Skript lässt sich einfach modifizieren.

z.B.

0 13 * * bash /home/pi...

Ihr müsst dabei die Uhrzeit in dem Format „Minuten Stunden“ lesen.
0 13 bedeutet das um 13 Uhr ein Backup gemacht.

Ich kopiere die Backups dann alle paar Tage per SMB-Freigabe auf meinem Desktop-PC.

Facebooktwittergoogle_plusredditpinterestlinkedintumblrmail
mxvt Verfasst von:

Administrator