Backup mit Borgmatic und Borg zu eigenem Backup Server via SSH

Borgmatic ist ein Tool um borgbackup zu steuern. Hier eine kleine Anleitung.

Backup Server vorbereiten

Erstellen eines Backup Users

Unter diesem User werden die Backup Repos zur Verfügung gestellt.

adduser backupmaster

Installieren von Borg

Bei Ubuntu/Debian befindet sich borgbackup im Standard Repo.

apt install borgbackup

Repo anlegen

Für jedes Backup habe ich ein eigenes Repo, dies wird auf dem Backup Server initial mit borg init angelegt.

borg init -e repokey-blake2 backuprepo_srv1

SSH Key generieren für Borgbackup

Für jedes Repo wird ein individueller SSH Key erzeugt, dieser wird verwendet um sich per Public/Private Key gegen den Backup Server zu authentifizieren.

ssh-keygen -t ed25519 -C borgbackup

SSH Key für Repo berechtigen in authorized_keys

Der Public Key wird in die authorized_keys eingetragen mit dem command=““ Block. Wenn sich jemand mit dem Private Key anmeldet wird das angegebene Kommando ausgeführt. In diesem Fall wird borg serve gestartet, es wird das Repo bereitgestellt.

su - backupmaster
mkdir .ssh
touch .ssh/authorized_keys

Inhalt authorized_keys

Bei dem borg serve Kommando wird der Pfad des Borg Repos angegeben. append-only erlaubt ausschließlich das hinzufügen zum Repo, ein gesamtes Löschen ist nicht möglich. Siehe https://borgbackup.readthedocs.io/en/stable/usage/notes.html#append-only-mode

command="borg serve --restrict-to-path /home/backupmaster/backuprepo_srv1 --append-only" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHEdIlaEyXfB1FlzRioCOQboN+ZWRTG2nawkDuRb4oUm borgbackup

Backup auf einer Maschine einrichten

Installieren der nötigen Pakete

Die benötigten Pakete sind alle im Standard Repo bei Ubuntu/Debian dabei.

apt install borgmatic borgbackup mailutils

Conf. Verzeichnis erstellen

Für Borgmatic muss ein Konfigurationsverzeichnis erstellt werden. In diesem Verzeichnis wird eine YAML Datei abgelegt mit den Backup Einstellungen.

mkdir -p /root/.config/borgmatic

config.yaml

In source_directories werden alle zu sichernden Ordner als Liste angegeben. Bitte auf die korrekte Formatierung der YAML Datei achten. Unter repositories muss der Backupserver incl. Repo Namen angegeben werden. Unter storage kann man einen Encryption Key angeben für das Backup falls der Backupserver z.B. im Internet steht. Bei ssh_command wird der Private Key des oben erzeugten SSH Keys angegeben, diesen nach /root/.config/borgmatic/id_ed25519 kopieren. Bei retention kann die Aufbewahrungszeit der Backups festgelegt werden. Wer noch Scripte vor oder nach dem Backup starten möchte kann das unter „hooks“ machen. In meinem Fall exportiere ich die Liste der installierten Pakete in eine Datei.

location:
    source_directories:
        - /etc
        - /srv
        - /opt
        - /var/lib
        - /var/mail
        - /var/www
        - /root
        - /home

    one_file_system: true

    repositories:
        - backupmaster@backupserver.example.org:backuprepo_srv1

    exclude_caches: true

storage:
    compression: auto,zstd
    encryption_passphrase: CHANGE ME
    archive_name_format: '{hostname}-{now}'
    ssh_command: ssh -i /root/.config/borgmatic/id_ed25519 -p 22

retention:
    keep_daily: 3
    keep_weekly: 7
    keep_monthly: 12
    keep_yearly: 2
    prefix: '{hostname}-'

consistency:
    checks:
        - repository
        - archives

    check_last: 3
    prefix: '{hostname}-'

hooks:
    before_backup:
        - dpkg-query -f '${binary:Package}\n' -W > /root/packages_list.txt

Cronjob für regelm. Backups

Damit das Backup auch regelmäig läuft empfiehlt es sich einen Cronjob einzurichten. In diesem Beispiel jeden Tag um 23:15, das Ergebnis schicke ich mir als E-Mail.

contab -e


15 23 * * * borgmatic -v 1 2>&1 | mail -s "Backup Report" admin@example.org

Viel Spaß 🙂

1 Gedanke zu „Backup mit Borgmatic und Borg zu eigenem Backup Server via SSH“

  1. Hi,

    danke für diese Anleitung, sehr hilfreich!

    Ich hab das mit dem command limited ssh aufgesetzt, das automatisch „borg serve …“ basierend auf dem key startet.

    Wenn ich dann auf der zu sichernden Maschine „borgmatic -v 1“ aufrufe, regt sich borgmatic auf, bzw der entfernte „borg serve“, dass das Kommando „borg“ nicht gültig ist. Also versucht hier borgmatic, auf der Gegenseite „borg borg“ aufzurufen.

    Ich hab jetzt 15 Minuten gegoogelt, aber keinen Weg gefunden, um borgmatic beizubringen, bei einem entfernten „borg serve“ das Kommando „borg“ wegzulassen…

    Antworten

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.