Borgbackup einrichten unter Ubuntu

Sicherungskopie inkrementell erstellen Mit Borgbackup

Nach ein paar Tagen Verzweiflung und Kopf zerbrechen, habe ich endlich Borg Backup auf meinem Server zum Laufen gebracht. Damit werde ich zukünftig und einmal täglich meine Daten auf externen Speicher sichern.
Wie ich das gemacht habe, schreibe ich nun auf, damit auch ich Zukunft wieder darauf zurückgreifen kann, wenn ich es benötige.

Update: Habe dem gesamten Setup ein Update gegeben. Mit dieser verbesserten Anleitung sollte es besser funktionieren.

Installation:

Zuerst müssen wir Borgbackup und die Abhängigkeiten installieren.

sudo apt update sudo apt install borgbackup openssh-client mailutils cron -y sudo systemctl enable cron sudo systemctl start cron

Anschließend brauchen wir die Zugangsdaten zu dem externen Speicher. Bei mir ist es die Storagebox von Hetzner. Nun verbinden wir uns per FTP Programm (hier kann ich FileZilla empfehlen) mit der Storagebox und per SSH mit dem Server.

Um sicherzustellen, dass das Backup-Skript nahtlos funktioniert und ohne manuelle Eingabe eines Passworts auf den FTP-Server der Storagebox zugreifen kann, müssen wir einen SSH-Schlüssel erzeugen und auf dem Server hinterlegen. Hier ist die vollständige Anleitung:

Schritt 1: SSH-Schlüssel erzeugen

  1. SSH-Schlüssel erzeugen:
    Öffne ein Terminal und führe den folgenden Befehl aus, um ein neues SSH-Schlüsselpaar zu erzeugen:
 ssh-keygen -t rsa -b 4096 -C "deine_email@domain.com"

Du wirst aufgefordert, einen Speicherort für den Schlüssel anzugeben (Standard ist ~/.ssh/id_rsa). Drücke Enter, um den Standardpfad zu verwenden. Du kannst auch ein Passwort für den Schlüssel festlegen oder es leer lassen für einen passwortlosen Schlüssel (empfohlen für automatisierte Prozesse).

  1. Öffentlicher Schlüssel wird erstellt:
    Dein öffentlicher Schlüssel wird in ~/.ssh/id_rsa.pub gespeichert. Diesen musst du auf den FTP-Server deiner Storagebox hochladen.

Schritt 2: Öffentlichen Schlüssel auf dem FTP-Server hinterlegen

  1. SSH-Verbindung testen:
    Teste zunächst die Verbindung zum Server, um sicherzustellen, dass sie funktioniert:
 ssh u123456@u123456.your-storagebox.de -p 23
  1. Öffentlichen Schlüssel hochladen:
    Kopiere den öffentlichen Schlüssel auf den Server:
 ssh-copy-id -i ~/.ssh/id_rsa.pub u123456@u123456.your-storagebox.de -p 23

Falls ssh-copy-id nicht verfügbar ist, kannst du den Schlüssel manuell kopieren:

 cat ~/.ssh/id_rsa.pub | ssh -p 23 u123456@u123456.your-storagebox.de "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Schritt 3: SSH-Verbindung testen

Stelle sicher, dass die passwortlose Authentifizierung funktioniert, indem du dich erneut mit dem Server verbindest:

ssh u123456@u123456.your-storagebox.de -p 23

Du solltest nun ohne Aufforderung zur Passworteingabe angemeldet werden.

Schritt 4: Backup-Skript erstellen

Erstelle die Datei borg_backup.sh und füge folgendes Skript ein:

#!/bin/bash # Konfigurationsvariablen REPOSITORY="ssh://u123456@u123456.your-storagebox.de:23/./backups/server" BACKUP_DIR="/pfad/zu/den/zu/sichernden/daten" LOG_FILE="/pfad/zum/backup_verzeichnis/borg_backup.log" EXCLUDES="/pfad/zur/exclude_liste" EMAIL="deine_email@domain.com" DATE=$(date +"%Y-%m-%d %H:%M:%S") # Sicherstellen, dass das Backup-Verzeichnis existiert mkdir -p "$(dirname "$LOG_FILE")" # Backup erstellen echo "Starte Backup am $DATE" >> "$LOG_FILE" if borg create --verbose --filter AME --list --stats --show-rc --compression lz4 --exclude-from "$EXCLUDES" "$REPOSITORY::'{hostname}-{now:%Y-%m-%d_%H-%M-%S}'" "$BACKUP_DIR" >> "$LOG_FILE" 2>&1; then echo "Backup erfolgreich: $DATE" >> "$LOG_FILE" else echo "Backup fehlgeschlagen: $DATE" >> "$LOG_FILE" echo "Backup fehlgeschlagen: $DATE" | mail -s "BorgBackup Fehler" $EMAIL exit 1 fi # Alte Backups entfernen echo "Entfernen alter Backups am $DATE" >> "$LOG_FILE" if borg prune -v --list "$REPOSITORY" --keep-daily=7 --keep-weekly=4 --keep-monthly=6 >> "$LOG_FILE" 2>&1; then echo "Alte Backups erfolgreich entfernt" >> "$LOG_FILE" else echo "Entfernen alter Backups fehlgeschlagen" >> "$LOG_FILE" echo "Entfernen alter Backups fehlgeschlagen" | mail -s "BorgBackup Prune Fehler" $EMAIL exit 1 fi # Erfolgsbenachrichtigung senden echo "Backup und Bereinigung erfolgreich abgeschlossen am $DATE" | mail -s "BorgBackup Erfolgreich" $EMAIL

Schritt 5: Skript ausführbar machen

Mache das Skript ausführbar mit folgendem Befehl:

chmod +x borg_backup.sh

Schritt 6: Exclude-Liste erstellen

Erstelle eine Datei namens exclude_list.txt und füge alle Verzeichnisse und Dateien hinzu, die vom Backup ausgeschlossen werden sollen. Beispiel:

/pfad/zu/den/zu/sichernden/daten/tmp /pfad/zu/den/zu/sichernden/daten/cache

Schritt 7: Cron-Job einrichten

Um das Skript regelmäßig auszuführen, erstelle einen Cron-Job. Öffne die Crontab-Datei:

crontab -e

Füge die folgende Zeile hinzu, um das Skript täglich um 3 Uhr morgens auszuführen:

0 3 * * * /pfad/zum/borg_backup.sh

Fazit

Mit diesen Schritten hast du ein vollständiges, automatisiertes Backup-Skript mit BorgBackup eingerichtet, das Daten auf einen entfernten Server sichert. Durch die Einrichtung der passwortlosen SSH-Authentifizierung wird der Prozess nahtlos und sicher durchgeführt. Passe die Konfigurationsvariablen an deine spezifischen Bedürfnisse an, um sicherzustellen, dass deine Daten regelmäßig und zuverlässig gesichert werden.

Quellen: Thomas Leister, Hetzner Borgbackup Wiki , Readthedocs

Klicke, um diesen Beitrag zu bewerten!
[Gesamt: 0 Durchschnitt: 0]

Bylars

Ich bin 44 Jahre alt und blogge seit mehreren Jahren. Beruflich bin ich Fachangestellter für Bädeebetriebe und lebe und liebe diesen Beruf in und rundum Fulda. Habe eine Partnerin und liebe genauso meinen Dackel.

Schreibe einen Kommentar

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