Mittlerweile sind meine Rasperry PI’s die all-round-lösung für sämtliche, lästige Probleme. Auch meine (Webseiten) sichere ich nun automatisch mit dem Rasperry Pi über das Tool ftp oder lftp.
Das man auch erstellen von Backups eigener Webseiten nicht vernachlässigen sollte, wird hoffentlich den meisten klar sein. Auch wenn es selten ist das ein Update fehlschlägt, der Server abstürzt oder die Seite gehackt wird, ist ein funktionierendes Backup gerade dann sehr wichtig. Wichtig aber auch, dass es automatisiert im Hintergrund läuft, denn mit langweiligen wiederkehrenden Aufgaben, habe ich auch nicht unbedingt was am Hut.
Die Vergangenheit zeigt, dass ich dann lieber etwas Entwicklungsarbeit investiere um mir sollche Aufgaben zu automatisieren oder zumindest zu erleichtern.
Bisher habe ich immer mal quartalsweise ein Backup manuell angestoßen.
Das Backup der Webseite muss auch nicht immer lokal (zu Hause) sein, besser ist es trotzdem es bei sich zu haben, besser noch Offline, denn ist der Webspace erst mal gehackt, wäre dann auch das auf dem Webspace gelagerte Backup im Eimer.
Übersicht
WordPress automatisch mit dem Rasperry PI sichern
Bei mir läuft das Backup nun über meinen alten RasperryPi.
Was brauchen wir nun um WordPress einfach und automatisiert zu sichern?
Als erstes ein Plugin wie WP Backup, um ein Backup der Website inkluse Datenbank zu erstellen und auf dem Webspace abzulegen. Danach kommt der RasPi ins spiel auf dem das folgende Script läuft und die Daten per FTP abholt.
WP Backup Job einrichten
In WP Backup habe ich den Job wie folgt eingerichtet. Gestartet wird der Job via URL Aufruf vom RasperryPI (curl Befehl). Danach gibt es eine kurze Pause von 1-2 Minuten, wobei anschließend der Raspi anfängt das erstellte Archiv per FTP oder lFTP runterzuladen und zu löschen.
1. Aufgabe in WP Backp einrichten (Website)
– alles sichern, Dateien, MySQL Daten, XML
– speichern als gezippte Datei in uploads…
– gestartet wird der Job per URL-Aufruf
2. auf dem Rasperry PI
– Backup Script anlegen
– Zugangsdaten eintragen
– testen
– nach dem Download letztes Backup auf dem Webspace löschen, damit wir uns nicht vollmöhlen
Das Script:
Der lftp Befehl mirror wird mit zwei Optionen ausgeführt, damit alles was runtergeladen wurde, im Nachgang gelöscht wird. „mirror –delete“
#!/usr/bin/bash
# Backup ftp-sites
#
username="ftp-user"
pass="ftp-password"
ftp="ftp://www.yourwebsite.de:21 TLS" # Port 21 und TLS
localdir="/home/superpi/backups/meinewebsite/"
remotedir="/wordpress/wp-content/uploads/backwpup-fxxxxa-backups/vollbackup/"
joblink="https://www.yourwebsite.de/wp-cron.php?_nonce=xxxx&backwpup_run=runext&jobid=1"
waitingtime="300" #secounds
## starts WP Backupjob
echo "execute job: $joblink"
curl $joblink
echo "backup $ftp"
read -t $waitingtime -p "waiting:..."
## check targetdir
if [[ "$localdir" ]]; then
echo "folder exists: $localdir"
else
mkdir $localdir
echo "folder has been created: $localdir"
fi
## start FTP backup
lftp -u $username,$pass $ftp -e "set ftp:ssl-allow off" << EOF
mirror $remotedir $localdir
bye
EOF
echo "download done."
Möchte man nicht extra ein Plugin installieren, kann man auch Order oder den gesamten Webspace per lFTP downloaden. Vergesst nicht an dieser Stelle, dass tatsächlich die WordPress-Datenbank die kostbare Berichte und Inhalte enthält! Ein Backup der MySQL-Datenbank per Script zu erstellen ist wieder ein ganz andere Leid, gerade ohne root-Zugriff. Im Zweifel bleibt da nur der phpMyAdmin des Providers.
Wie du den gesamten Webspace rekursiv (mit Unterordnern) runterlädst, wird im folgende Abschnitt beschrieben.
Weitere Infos und Parameter zu lftp: https://linux.die.net/man/1/lftp
den kompletten Webspace automatisch mit dem Rasperry PI sichern
Setzt ihr ein anderes CMS wie JOOMLA ein oder eine OWNCloud, Nextcloud oder was auch immer, und das wollt ihr alles einmal sichern, dann kann man das ziemlich intelligent mit der MIRROR-Funktion des Linux Tools lFTP umsetzen. Vergesst aber nicht die Datenbanken die bei Joomla, OWNCloud und Co. im Hintergrund laufen!
Damit nur die Änderungen im späteren Verlauf gesichert werden, muss man noch „–only-newer“ hinzufügen. Auf die Option „–delete“ verzichten wir hier da ansonsten der Webspace geleert werden würde.
#!/usr/bin/bash
# Backup ftp-sites without deleting downloaded remote files
#
username="<ftp-user>"
pass="<ftp-password>"
ftp="ftp://www.yourwebsite.de:21 TLS"
localdir="/home/pi/backups/wordpress"
remotedir=""
joblink="https://www.yourwebsite.de/wp-cron.php?_nonce=xxxxxx&backwpup_run=runext&jobid=1"
waitingtime="300" #secounds
## starts WP Backupjob
echo "execute job: $joblink"
curl $joblink
echo "backup $ftp"
read -t $waitingtime -p "waiting:..."
## check targetdir
if [[ "$localdir" ]]; then
echo "folder exists: $localdir"
else
mkdir $localdir
echo "folder has been created: $localdir"
fi
## start FTP backup
lftp -u $username,$pass $ftp -e "set ftp:ssl-allow off" << EOF
mirror --only-newer $remotedir $localdir
bye
EOF
echo "Backup has been finished."
anschließender Virenscan mit ClamScan
Ganz praktisch… ist der Webspace erst mal runtergeladen, kann man das Backup auch mit CLAMAV auf Schadsoftware untersuchen. So hat man „eine“ kleine Kontrolle dass der Webspace sauber ist.
clamscan [options] [file/directory/-]
### ein Beispiel
clamscan /backups/
weitere Informationen zu CLAMscan findet ihr in der DOKU:
– https://docs.clamav.net/manual/Usage/Scanning.html
Wer auch noch seine Docker-Umgebung einfach und schnell sichern möchte, findet die passende Anleitung ….
weitere Artikel zu Backup, Datensicherung und Rasperry PI
- die richtigen Netzwerkeinstellungen für PiAlert im Docker
- Webseiten automatisch via FTP auf den Rasperry PI sichern (Backup)
- Welcher Rasperry PI ist der richtige für mich? 4er, 5,er mit 2GB, 4Gb,8GB Ram?
- Tipps beim Digitalisieren der Aktenordner mit Paperless-NGX (Papierloses Büro)
- Rasperry pi beim ersten Boot mit WLAN verbinden (headless / unattended firstboot)
- Troubleshooting Docker Container
- Rasperry Pi sicher betreiben