Schlagwort-Archive: borgmatic

borgbackup und borgmatic mit pip installieren

borgmatic ist erst in Ubuntu 20.04 in den offiziellen Paketquellen und wenn man das aktuellste haben möchte empfiehlt sich die Installation über pip.

Benötigte Pakete

apt install python3-setuptools python3-dev python3-pip libssl-dev libacl1-dev build-essential

Anschließend mit pip3 borgmatic und borgbackup installieren:

pip3 install borgbackup borgmatic

Ich hatte bei mir das Problem das borgmatic und borg in den cronjobs nicht funktioniert haben. borgmatic/borgbackup werden in /usr/local/bin installiert das per Default dem Cron nicht bekannt sind. In der Crontab folgende Ergänzung durchführen (Achtung diese Änderung ist global und gilt für alle Cronjobs):

# m h  dom mon dow   command

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
LD_LIBRARY_PATH=/usr/local/lib

24 23 * * * borgmatic -v 1 2>&1 | mail -s "Backup Report" example@example.com

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ß 🙂