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

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 mysqldumper-Datenbank-Backups.

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/mysql

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 Datenbank-Backups, die ich mit dem mysqldumper automatisiert per cronjob erzeuge, liegen unter

/MySqlDumper/work/backup/

Die einzelnen Stellen des Scripts sind kommentiert. So sieht man was es tut.

#!/bin/bash

# Skript zum Herunterladen von Datenbankdumps aus dem MySQLDumper von All-Inkl.com

# login-daten
HOST="mein_host"
USER="mein_ftp_user"
PASSWD="mein_passwort"
MKDIRMYSQL=mysqldumper-$(date +"%d%m%Y_%H%M-%S")

# login all-inkl
ncftp -u $USER -p $PASSWD $HOST <<SCRIPT
binary

# sicherung datenbanken
lcd /home/pi/allinkl_backup/tmp
lmkdir $MKDIRMYSQL
lcd $MKDIRMYSQL
# Pfad an dem die Backups vom mysqldumper liegen
cd /MySqlDumper/work/backup/
mget -R *
exit
SCRIPT
# Sicherungen komprimieren
cd /home/pi/allinkl_backup/tmp
tar -czvf $MKDIRMYSQL.tar.gz $MKDIRMYSQL/
# Rohdaten löschen
rm -r $MKDIRMYSQL
cd /home/pi/allinkl_backup/mysql
# alte Sicherung löschen
rm *.tar.gz
# neue Sicherung verschieben
mv /home/pi/allinkl_backup/tmp/$MKDIRMYSQL.tar.gz /home/pi/allinkl_backup/mysql

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_mysql_backup.sh
#die datei wird gespeichert

So erhält man immer regelmäßig seine Datenbanksicherungen 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