Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke

Grundlagen: Der Raspberry Pi als kleiner "Backup-Server"

Was braucht man ?

Ein Rechner der per Samba im Netzwerk erreichbar ist. Dafür ist ein Raspberry Pi oder Banana Pi Ideal = geringer Stromverbrauch und immer verfügbar.

Erst hatte ich darüber nachgedacht den "Pi" mit einem Cronjob auszustatten und periodisch darauf zu warten das ein bestimmter Rechner im Netzwerk angemeldet ist, um dann den Inhalt auf den "Pi" zu übertragen. Das ganze funktioniert auch, aber dadurch muss ich die Zugangsdaten für den Hauptrechner auf dem "Pi" lesbar speichern, das wollte ich dann doch nicht.

Also habe ich das ganze umgekehrt.

Ich habe hier ein Macbook mit 10.6.8 mit einer festen IP (genauso wie die verschiedenen Raspberrys im Netzwerk). Also habe ich hier im Terminal im Mac ein Cronjob angelegt, der festlegt das einmal pro Woche div. Änderungen eines bestimmten Ordners mit dem Inhalt eines Raspberry Pis abgeglichen werden. So sind nur auf meinen Hauptrechner die Zugangsdaten gespeichert und der Cronjob wird nur ausgeführt wenn der Rechner auch an ist. Warum nicht die Timemaschine von Mac OS X verwenden ? - Warum ? ich brauche nur ein Backup von ein paar Ordnern, und nicht des ganzen Systems. Für die paar Bytes brauch ich mir keine Terrabyte HD irgendwo hin stellen, wenn ich nur ein paar Megabytes gesichert haben möchte.

Funktion dieses Scriptes:

Das Script prüft ob schon ein Share mit dem Namen "Volumes/dein Share" existiert. Sollte es schon existieren, wird direkt Synchronisiert. Sollte der SMB Share noch nicht gemountet sein, wird er angemeldet, Synchronisiert und wieder abgemeldet.

Folgendes Bash Script ist dabei heraus gekommen, was ihr natürlich noch per Hand anpassen müsst:

#!/bin/sh
IP="192.168.0.2" #IP des Raspberrys
SMB="MeinSHARE" #SMB Sharename
PFAD="BACKUP" #Ordner/Pfad auf dem Ziel (Raspberry)
QUELLE="/Users/Username/Documents/" #Quelle
USER="Username" #Username
PASS="Passwort" #Passwort

# Ab hier nichts ändern...
#(C)2015 A.Teichmann

SHARE="/Volumes/"$SMB #Sharenamen erzeugen
LOGIN="//"$USER:$PASS"@" #Userdaten erzeugen

if ! [ -e $SHARE ]; then
mkdir $SHARE #erstelle den Shareordner
mount_smbfs $LOGIN$IP/$SMB $SHARE #Melde den Share im System an
erstellt="JA" #Variable setzen um zu merken das der Share vom Script erstellt wurde
fi

# Synchronisiert den Lokalen Ordner zu dem Share
rsync -avrltvz $QUELLE $SHARE/$PFAD

# Synchronisiert den Share zurück zum Lokalem Ordner
rsync -avrltvz $SHARE/$PFAD/ $QUELLE

#Evtl einseitig gelöschte Dateien werden auf der anderen Seite NICHT gelöscht

if [ "$erstellt" = "JA" ]; then
# Wurde der Share vom System erstellt, dann entferne ihn wieder.
umount $SHARE
fi
exit

Das Script ist selbsterklärend, trotzdem mal eine zusammenfassung:

IP="192.168.0.2" #IP des Raspberry Pis der als Backup herhalten soll

SMB="MeinSHARE" #Wenn Ihr euern Pi über den Desktop per Doppelklick oder über Apfel+K (SMB://IP des Pis) mountet dann nehmt ihr den Sharenamen der dort angezeigt wird.

PFAD="BACKUP" #Ordner/Pfad auf dem Ziel , Wenn der Share gemountet ist soll vieleicht alles in einem Ordner synchronisiert werden ?

QUELLE="/Users/Username/Documents/" #Quellpfad von dem Ordner den ihr Synchronisieren wollt. An den Pfad kommt ihr wenn ihr den Ordner in einen Texteditor per Drag und Drop reinzieht.

USER="Username" #Username und Passwort des Raspberrys
PASS="Passwort" #Passwort

Das Obige Script funktioniert hier einwandfrei, und Syncronisiert vom Mac zum Raspberry zuverlässig alle Daten. Schneller geht es mit einem Banana Pi (Gigabit Schnittstelle), aber wenn es nicht viele Daten sind reicht ein "billiger" Raspberry Pi mit einer großen SD Karte locker aus.

Wenn Ihr das Script unter z.b. /home/username/documents/sync.sh speichert, könnte ihr mittels sudo crontab -e einen Cronjob anlegen und festlegen wann dieser Sync stattfinden soll.

z.b. so:

0 20 * * * /bin/bash /home/username/documents/sync.sh >/dev/null 2>&1

Also jeden Tag um 20 Uhr...

 

Grundlagen: Der Raspberry Pi als kleiner "Backup-Server"

Vom Raspberry Pi den Mac mounten, wie geht das ?

Auch das ist recht simpel möglich, das wird aber anders aufgerufen... , hier mal zum Aufbau einer Verbindung von einem Raspberry Pi mit dem User PI auf einen Mac mit Mac OS X 10.6.8. Angepasst werden muss der USERNAME von dem Mac und das Passwort muss im Klartext hier hinterlegt werden (PASSWORT). Weiterhin sollte man auch noch die IP des Macs wisses.

sudo mount -t cifs -o user=USERNAME,password=PASSWORT,sec=ntlmv2 //192.168.0.2/USERNAME /home/pi/sambashare/
Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke

 

Grundlagen: Der Raspberry Pi als kleiner "Backup-Server"

Einen Raspberry Pi vom anderen aus per SSH Synchronisieren - also Rsync mittels SSH als Bash Script.

Ein Komplettbackup eines RPis während des Betriebes ist nicht möglich, aber man kann Logfiles und Programmiertes "Backuppen". Ich lege ja immer alles in den /var/www/ Ordner - das macht das Backuppen erheblich leichter bei RPis die nicht vom Internet aus erreichbar sind.

Wenn man z.b. den Ordner "var/www/" vom einem anderen Raspberry Pi auf den aktuellen übertragen möchte (z.b. in ein Backup Ordner), dann reicht schon ein Einzeiler - meist möchte man das aber von einem Bash Script aus erledigen lassen, dafür müssen wir dann SSHpass installieren um nicht jedes mal ein Passwort angeben zu müssen.

Also nachdem folgendermaßen SSHPass installiert haben:

sudo apt-get install sshpass

kann es daran gehen ein Bash Script zu schreiben , was uns das Synchonisieren abnimmt:

/var/www/sync.sh

Das Passwort, den User und die IP muss ersetzt werden, genauso wie der Quellordner(entfernt) und der Zielordner(hier)

#!/bin/sh

if ping -c 1 192.168.0.24 >/dev/null 2>&1
then


sshpass -p 'Passwort' rsync --progress -avz -e "ssh -o StrictHostKeyChecking=no" pi@192.168.0.24:/var/www/ /var/www/_BACKUP/Raspi1

fi

Weiterhin müssen wir uns einmal mit dem Raspberry Pi per SSH mit dem anderen RPi verbinden:

ssh 192.168.0.24 -l pi

Anschließend loggen wir uns wieder mit Exit aus und können unser Script starten.

bash /var/www/sync.sh

Rsync sollte dann den entfernten Quellordner mit dem auf dem Raspberry Pi Ordner abgleichen. Wenn man das Bash Script in den Sudo Crontab -e einträgt, kann man so ein z.b. Wöchentliches automatisches Backup machen.Syncronisiert wird aber nur wenn die IP auch erreichbar ist.

Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke