FTP-Backup-Script mit ncftp – So sichere ich meinen Webspace Part 2

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.

Schreibe einen Kommentar

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