In diesem Teil zeige ich euch mein stabil laufenden 1. Version eines Shellscripts, mit dem ich meinen Webspace auf all-inkl.com auf meinen lokalen Server sichere. Die Version in diesem Artikel verwende ich zur Sicherung meiner CMS-Dateien.
Erforderliche Ordnerstruktur
Als lokalen Server habe ich einen Raspberry Pi erfolgreich getestet. Dieser ist sehr sparsam im Stromverbrauch und kann daher bedenkenlos mehrere Stunden den umfangreichen FTP-Download und den Kompressionsvorgang nach tar.gz verarbeiten. Ich betreibe den Raspberry Pi dabei immer ohne Monitor und greife über ssh auf diesen zu.
Wichtig: Man sollte sich vorher ansehen, wie groß die auf dem Webspace das Hosting-Anbieters (bei mir all-inkl.com) im Filesystem gespeicherten Dateien sind. Es darf nicht dazu kommen, dass der Speicherplatz auf der SD-Karte im Raspberry Pi zu klein wird. Den freien Speicherplatz auf dem Raspberry Pi zeigt man sich wie folgt an.
# per ssh auf der raspberry pi angemeldet # anzeige des freien Speichers in megabyte df -hm
Damit das Script problemlos arbeitet, habe ich folgende Verzeichnisstruktur unter dem Home-Verzeichnis des Users pi eingerichtet, die in folgender Übersicht zu sehen sind. Man kann natürlich auch andere wählen, jedoch muss dann das Shell-Script an den richtigen Stellen angepasst werden.
#verzeichnis in das aktueller download erfolgt: /home/pi/allinkl_backup/tmp #verzeichnis in denen tar.gz-datei der sicherungen gespeichert wird /home/pi/allinkl_backup/website
Script
Das Script verwendet als Basismaschine den Commandline-FTP-Client ncftp. Mit diesem habe ich sehr gute Erfahrungen beim rekursiven Download bei FTP gemacht. Weiterer Vorteilt, ist dass dieser sehr intuitiv zu bedienen ist (z.B. Autocompletion erspart Schreibarbeit bei Navigation auf dem FTP-Server). Alle Befehle lassen sich durch Eingabe von „help“ im ncftp-Client anzeigen.
Diesen installiert man einfach über apt-get:
#installation des ncftp-client sudo apt-get install ncftp
Meine Dateien der Web-Content-Mangement-Systeme (WordPress, Drupal, phpbb), liegen unter
/websites
Die einzelnen Stellen des Scripts sind kommentiert. So sieht man was es tut.
#!/bin/bash #login-daten HOST="mein_host" USER="mein_ftp_user" PASSWD="mein_passwort" MKDIRWEBSITE=website-$(date +"%d%m%Y_%H%M-%S") #login all-inkl ncftp -u $USER -p $PASSWD $HOST<<SCRIPT binary #sicherung webseiten lcd /home/pi/allinkl_backup/tmp lmkdir $MKDIRWEBSITE lcd $MKDIRWEBSITE cd /websites dir mget -R * exit SCRIPT cd /home/pi/allinkl_backup/tmp # Sicherungen komprimieren tar czvf $MKDIRWEBSITE.tar.gz $MKDIRWEBSITE/ # Rohdaten löschen rm -r $MKDIRWEBSITE cd /home/pi/allinkl_backup/website # alte Sicherung löschen rm *.tar.gz # neue Sicherung verschieben mv /home/pi/allinkl_backup/tmp/$MKDIRWEBSITE.tar.gz /home/pi/allinkl_backup/website
Das Script binde ich als cronjobs des Users pi ein und lasse es so automatisiert und regelmäßig über Nacht laufen:
#als user pi crontab anlegen crontab -e #folgende Zeile einfügen, wobei es abhängt, wo das shell-script gespeichert ist #damit wird jede Woche am sonntag um 1 uhr eine Sicherung gestartet 0 1 * * 7 /home/pi/scripts/allinkl_website_backup.sh #die datei wird gespeichert
So erhält man immer regelmäßig alle Dateien der verwendeten CMS und ist ggü. Datenverlust doppelt abgesichert. Das Script hat leider noch den Nachteil, dass keine mehreren Generationen von Sicherungen unterstützt werden. Auch ist es schwierig, wenn mehrere Sicherungen gleichzeitig laufen. Daher arbeite ich gerade an einer stabileren Version, die höhere Variabilität bietet.