Backup von Datenbank automatisch anlegen

Backup von Datenbank automatisch anlegen


31.05.2016  |  Kurztipps

Falls dein Raspberry Pi einmal nichtmehr startet, ist die einzige Möglichkeit, ihn wieder zum Laufen zu bringen, ein Backup des System-Images neu aufzuspielen. Wenn du ein Backup der Server-Imagedatei gemacht hast, kannst du dieses ganz einfach wieder auf die SD-Karte laden (siehe eben genanntes Tutorial). Da du aber wahrscheinlich nicht jeden Tag eine Kopie des gesamten Servers machst, sind die neuesten Einträge in der Datenbank nichtmehr vorhanden. Eine Option, die aber nicht sehr komfortabel ist, wäre das tägliche Kopieren der Datenbank per FTP auf deinen Computer. In diesem Tutorial zeige ich dir, wie du automatisch regelmäßig eine Sicherheitskopie der Datenbank-Datei auf einem USB-Stick oder einer USB-Festplatte anlegen kannst. Diese kann bei Bedarf einfach wieder per FTP auf deinen Server kopiert werden. Dazu wird im folgenden ein Cronjob angelegt, also ein Befehl, der vom Betriebssystem immer zu einer durch Regeln definierten Zeit ausgeführt wird.

Anforderungen für dieses Tutorial

Benötigte Treiber installieren

Damit du USB-Sticks und USB-Festplatten mit den Dateisystemen NTFS und HFS+ verwenden kannst, musst du zuerst die Treiber für diese installieren. Mit den folgenden Befehlen aktualisierst die Quellen und installierst anschließend die benötigten Treiber:
sudo apt-get update
sudo apt-get -y install ntfs-3g hfsutils hfsprogs

USB-Stick mounten

Bevor das Speichermedium letztendlich gemounted wird, muss zuerst ein Ordner erstellt werden, in den es eingebunden wird und der Nutzer Pi wird zum Besitzer des Ordners gemacht. Dies geschieht mit folgenden Befehlen:
sudo mkdir /media/server-backup
sudo chown pi /media/server-backup
Um das Medium einzubinden, wird der Pfad zur Partition des Mediums benötigt. Diesen kannst du mit folgendem Befehl ermitteln:
sudo fdisk -l
Dieser Befehl listet alle Speichermedien mit ihren Partitionen auf. Der angeschlossene USB-Stick ist in meinem Fall der unterste Eintrag mit der Pfad-Adresse "/dev/sda1".
Hier werden alle Speichermedien aufgelistet.
Der Befehl zum Mounten des Speichermediums hängt von dessen Dateisystem ab ("/dev/sda1" wird mit dem zuvor ermittelten Pfad ersetzt):

Ext4

sudo mount /dev/sda1 /media/server-backup

NTFS

sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/server-backup

HFS+

sudo mount -t hfsplus -o force.uid=pi,gid=pi /dev/sda1 /media/server-backup

FAT32

sudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/server-backup

Speichermedium bei jedem Systemstart automatisch einbinden

Damit das USB-Gerät bei jedem Neustart automatisch eingebunden werden kann, wird die UUID des Mediums benötigt. Diese wird mit dem folgenden Befehl ermittelt:
sudo blkid
In der Ausgabe werden nun alle UUID's aufgelistet.
Jetzt suchst du in der Ausgabe nach dem Speichermedium mit dem Pfad, den du zuvor ermittelt hast (in meinem Fall "/dev/sda1") und merkst dir die UUID (in meinem Fall "FEAD-BC6C"). Als letztes muss dem System noch mitgeteilt werden, welches Speichermedium bei jedem Systemstart eingebunden werden soll. Dazu bearbeiten wir die Datei "/etc/fstab":
sudo nano /etc/fstab
An das Ende dieser Datei fügst du nun, je nach Dateisystem deines Sticks, eine der folgenden Zeilen ein und setzt die UUID des Mediums ein:
#FAT32
UUID=[UUID DES MEDIUMS] /media/server-backup vfat defaults,umask=000,users 0 0

#HFS+
UUID=[UUID DES MEDIUMS] /media/server-backup hfsplus defaults,umask=000,users 0 0

#NTFS
UUID=[UUID DES MEDIUMS] /media/server-backup ntfs-3g defaults,umask=000,users 0 0

#Ext4
UUID=[UUID DES MEDIUMS]  /media/server-backup  ext4  defaults  0  0

Das Backup anlegen

Um die Sicherheitskopie der Datenbank nun auf den Stick zu kopieren gibst du einfach den folgenden Befehl ins Terminal ein:
cp /var/www/html/database/data.sqlite /media/server-backup/database-backup.sqlite
Damit du den Befehl aber nicht jedes mal selbst eingeben musst, wird ein Cronjob angelegt, der das Speichermedium bei jedem Systemstart automatisch wieder einbindet. Ein solcher Cronjob ist schnell und einfach angelegt: Als erstes wird die Crontab-Datei geöffnet:
crontab -e
Dort fügst du am unteren Ende eine neue Zeile ein:
0 0 * * * cp /var/www/html/database/data.sqlite /media/server-backup/database-backup.sqlite
Jetzt speicherst du die Änderungen mit STRG + X, bestätigst mit J und drückst die Eingabetaste. Ab jetzt wird jeden Tag um Mitternacht eine Sicherheitskopie der Datenbank auf den USB-Stick kopiert. Bei Fragen, Ideen oder Problemen, kannst du mir gerne einen Kommentar hinterlassen.

Über den Autor


Sascha

Hallo, ich bin Sascha, der Gründer von Smarthome Blogger.

Mit einer Leidenschaft für Technologie und einem Hintergrund als Software Engineer habe ich 2016 Smarthome Blogger gegründet. Mein Ziel war es schon immer, innovative Lösungen zu entdecken, die unser Leben einfacher und intelligenter gestalten können. In meinem beruflichen Leben arbeite ich täglich mit Software und Technik, aber auch in meiner Freizeit bin ich stets auf der Suche nach neuen technischen Spielereien und Möglichkeiten, mein Zuhause zu automatisieren und zu verbessern.

Auf Smarthome Blogger teile ich mein Wissen, meine Erfahrungen und meine Begeisterung für alles rund um das Thema Smarthome.



Dieser Beitrag hat dir gefallen?

Dann abonniere doch unseren Newsletter!