Ubuntu Backup mit BorgBackup – Teil 1

Heute möchte ich kurz beschreiben, wie ich die Daten von meinen Ubuntu-Systemen sichere. Ich nutze dazu Borg (oder auch BorgBackup bezeichnet), da dieses recht einfach zu benutzen ist und kostenfrei ist. Beginnen wir mit der Konfguration.

Der Backup Server

Der Backup-Server kümmert sich um die Speicherung und Verwaltung der Backup-Daten. Das System ist ebenfalls ein Ubuntu in der aktuellen LTS-Version. Die Installation funktioniert wie gewohnt mit apt.

sudo apt update && sudo apt install borgbackup -y

Nach der Installation habe ich einen eigenen Benutzer angelegt, mit dem das Backup durchgeführt wird.

sudo adduser borgbackup

Nun muss ein neuer Ordner erzeugt werden, in dem die Backup-Daten gespeichert werden. Pro Server verwende ich einen eigenen Unterordner, um eine genaue Zuordnung der Dateien zu haben. Nach der Erstellung des Ordners muss dieser einmalig initialisiert werden.

mkdir -p /home/borgbackup/backups/serverA
borg init /home/borgbackup/backups/serverA

Denken Sie daran, dass der borgbackup-Benutzer schreibenden Zugriff auf dieses Verzeichnis benötigt. Nun sind wir erst einmal mit der Installation fertig und wechseln auf den ersten Server, der gesichert werden soll.

Die Einrichtung des Backups auf dem ersten Server

Auf dem ersten Server, den wir sichern möchten, muss natürlich auch die Installation von Borg gemacht werden.

sudo apt update && sudo apt install borgbackup -y

Nach der Installation generieren wir uns für den root-Benutzer ein Schlüsselpaar, mit dem wir uns später am Backup-Server authentifizieren können.

sudo ssh-keygen -a 100 -t ed25519

Der Schlüssel wird standardmäßig unter

/root/.ssh

abgespeichert. Wir müssen nun den öffentlichen Teil des Schlüssels auf dem Backup-Server eintragen, damit ein Zugriff per Key möglich ist. Öffnen Sie dazu die Datei id_ed25519.pub und fügen Sie den Inhalt auf dem Backup-Server in der folgenden Datei ein:

/home/borgbackup/.ssh/authorized_keys

Nun muss das eigentliche Backup-Skript erstellt werden, was die Daten und ggf. Datenbanken sichert. Ich halte mich hier an den Beitrag von Thomas Leister Server-Backups mit Borg: So sichere ich meine Server, habe aber die Syntax angepasst, da ich Probleme mit dem Aufruf des Skripts hatte und ein paar Schritte (unter anderem für mich selbst) etwas ausführlicher beschreibe.

#!/bin/bash

## Variablen
LOG="backup.log"
HOST="<Hostname>"
REPOSITORY="ssh://borgbackup@<Servername>:22//home/borgbackup/backups/"$HOST

## Log-Ausgabe
exec > >(tee -i ${LOG})
exec 2>&1

echo "###### Starting backup on $(date) ######"

## Liste der installierten Software
dpkg --get-selections > /root/backup/software.list

## Datenbanken
echo "Creating database dumps ..."
/bin/bash /root/backup/dbdump.sh

## Dateien und Ordner
echo "Syncing backup files ..."
borg create -C lzma,9 -v --stats $REPOSITORY::'{now:%Y-%m-%d_%H:%M}' \
    /root/backup                                        \
    /etc                                                \
    /var/www

echo "###### Finished backup on $(date) ######"

Dieses Script erzeugt eine Liste der installierten Software, macht einen Dump von gewünschten Datenbanken mit Hilfe von einem eigenen Skript und sichert sämtliche Daten in den Verzeichnissen in Zeile 24 bis 26. Dieses Skript kann natürlich noch beliebig erweitert werden.

Denken Sie daran, dass Skript ausführbar zu machen!

chmod u+x /root/backup/backup.sh

Das Backup der Datenbanken

Während dem Aufruf des Backup-Skripts wird ein zweites Skript ausgeführt, welches sich um die Datenbanken auf dem System kümmert. Diese Datei sieht in meinem Fall wie folgt aus.

#!/bin/bash

DBUSER="backup"
DBPASSWD="geheimeskennwort"
DBBAKPATH="/root/backup/dbdumps/"

DBS="wordpress phpmyadmin"

for DBNAME in $DBS; do echo "Creating backup for database $DBNAME" && mysqldump -u $DBUSER -p$DBPASSWD $DBNAME > $DBBAKPATH"$DBNAME.sql"; done

Die beiden Datenbanken wordpress und phpmyadmin werden in das Verzeichnis /root/backup/dbdumps kopiert, welches wiederum dann in dem Borg-Backup enthalten ist.

Auch dieses Skript muss ausführbar sein!

chmod u+x /root/backup/dbdump.sh

Das Anlegen des Datenbank-Backup-Benutzers

Um das Datenbank-Skript erfolgreich ausführen zu können, muss der angegebene Benutzer vorhanden sein. Diesen kann man auf der Konsole wie folgt anlegen:

mysql -u root -p
create user 'backup'@'localhost' identified by 'geheimeskennwort';
grant SELECT, RELOAD, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, TRIGGER on *.* to 'backup'@'localhost';
quit;

Das erste Backup

Um zu prüfen, ob ein Backup nun funktioniert, kann das Backup-Skript nun per Hand aufgerufen werden. Beim ersten Aufruf wird gefragt, ob der SSH-Schlüssel im Speicher abgelegt werden darf. Bestätigen Sie dies, danach erscheint kein weiterer Aufruf. Klappt nun alles, wird das erste Backup erzeugt und auf dem Backup-Server gespeichert.

Automatisierung des Backups

Damit automatisch ein Backup erzeugt wird (z.B. jede Nacht), muss ein Cronjob angelegt werden. Hierzu führen wir ein crontab als root aus:

crontab -e

Am Ende des datei fügen wir nun unser Backup-Skript hinzu mit der gewünschten Zeit. In meinem Fall soll das Backup jeden Abend um 22 Uhr laufen.

# BorgBackup
0 22 * * * /root/backup/backup.sh > /dev/null 2>&1

Fazit

Im ersten Teil haben wir gelernt, wie man ein Backup mit Borg einrichtet. Im zweiten Teil widmen wir uns den erweiterten Optionen, dem Aufräumen von veralteten Backups, einer zusätzlichen Absicherung der SSH-Verbindung sowie einem möglichen Restore der Daten.


Sie benötigten persönliche Unterstützung oder haben nicht die richtige Lösung für Ihr Problem gefunden?

Dieser Blog wird von mir, Jan Kappen, in seiner Freizeit betrieben, hier beschreibe ich Lösungen für Probleme aller Art oder technische Anleitungen mit Lösungsansätzen.

Die berufliche Unabhängigkeit

Ich bin seit Januar 2020 vollständig selbstständig und habe meine eigene Firma gegründet, die Building Networks mit Sitz in Winterberg im schönen Sauerland. Hier stehe ich als Dienstleister gerne für Anfragen, Support oder Projekte zur Verfügung.

Die Firma Building Networks bietet Ihnen:

  • Hilfe und Support per Telefon, Fernwartung oder persönlich vor Ort
  • Projekt-Unterstützung
  • Ausgezeichnete Kompetenz zu den Themen
    • Microsoft Hyper-V
    • Microsoft Failover Clustering & HA
    • Storage Spaces Direct (S2D) & Azure Stack HCI
    • Veeam Backup & Recovery
    • Microsoft Exchange
    • Microsoft Exchange Hybrid Infrastruktur
    • Microsoft Active Directory
    • Microsoft Office 365
    • Ubiquiti
    • 3CX VoIP PBX
    • Fortinet Network Security
    • Baramundi Software
    • ...

Ich freue mich über Ihren Kontakt, weitere Informationen finden Sie auf der Webseite meiner Firma unter Building-Networks.de

Jan

Jan Kappen arbeitet seit 2005 in der IT. Er hat seine Ausbildung 2008 abgeschlossen und war bis 2018 als IT-Consultant im Bereich Hyper-V, Failover Clustering und Software Defined Storage unterwegs. Seit 2015 wurde er jährlich von Microsoft als Most Valuable Professional (MVP) im Bereich "Cloud & Datacenter Management" ausgezeichnet für seine Kenntnisse und die Weitergabe seines Wissens. Jan ist häufig auf Konferenzen als Sprecher zu finden, weiterhin bloggt er viel. Von September 2018 bis Dezember 2019 war Jan als Senior Network- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland angestellt. Im Januar 2020 hat er den Sprung in die Selbstständigkeit gewagt und ist seitdem Geschäftsführer der Firma Building Networks in Winterberg. In seiner Freizeit kümmert er sich um das Freifunk-Netzwerk in Winterberg und Umgebung.

Ein Kommentar:

  1. Pingback:Ubuntu Backup mit BorgBackup - Teil 2 - Jans kleiner Blog

Schreibe einen Kommentar

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