Versuch 6a: BorgBackup
1 Automatisierte Backups mit Borg und Ansible
1.1 Einführung
Backups sind essenziell um vor Datenverlust zu schützen. Im Optimalfall sind diese noch kryptografisch gesichert, kompriemiert und verlustfrei. Heutzutage fallen große Datenmengen an, die gesichert werden müssen, sowohl im privaten als auch im unternehmerischen und universitärem Umfeld. Manche Daten müssen sogar zwingend gespeichert werden aufgrund von Datenschutzgesetzen wie der DSGVO. Um diese Datenmengen zu sichern, braucht es sowohl eine Technik zur Sicherunge der Daten, eine Strategie, die festlegt wann und wie die Daten gesichert werden und physikalischen Speicher, um die Daten halten zu können. Im privaten Umfeld bietet sich hierfür eine externe Festpaltte an. Sobald es sich um größere Mengen von Daten handelt, wird oft auf NAS Systeme zurückgriffen. Auch Cloud Speicher sind eine Option, aber man sollte Kosten undf Sicherheit von externen Anbietern in die Entscheidung mit einbeziehen.
1.2 Backup-Techniken
1.2.1 Inkrementelle Backups
- Speichern nur die Änderungen seit dem letzten Backup, egal ob vollständig oder inkrementell.
- Vorteil: schnell und speichersparend
- Nachteil: Wiederherstellung erfordert alle vorherigen Backups in der Kette
1.2.2 Differenzielle Backups
- Speichern alle Änderungen seit dem letzten vollständigen Backup.
- Vorteil: Einfachere Wiederherstellung (nur 2 Teile nötig: Full + letzter Differential)
- Nachteil: Mehr Speicherverbrauch als inkrementell
1.2.3 Snapshot-basierte Backups
- Speichern einen exakten Zustand eines Dateisystems zu einem bestimmten Zeitpunkt.
- Nutzen meist Copy-on-Write (CoW):
- Beim Snapshot wird nichts kopiert
- Änderungen danach werden vor dem Überschreiben weggesichert
- Ergebnis: parallele Zustände für Live-System und Snapshot-Zeitpunkt
1.2.3.1 Beispiel (LVM):
lvcreate --size 1G --snapshot --name snap1 /dev/vg0/root
- Snapshot speichert nur die Unterschiede, nicht das ganze Dateisystem
- Ideal für konsistente Backups mit Tools wie Borg oder rsync
Achtung: Snapshots wachsen mit jeder Änderung → Speicher beachten!
1.2.4 Ziel & Abwägung
- Speicherbedarf reduzieren ↔︎ Wiederherstellungszeit minimieren
- Gute Backup-Strategien kombinieren mehrere Methoden
- Wichtig: regelmäßiges Testen der Wiederherstellung!
Ziel: Speicherbedarf vs. Wiederherstellungsaufwand abwägen
1.3 Borg Backup – Überblick
Borg ist Open Source und sein Hauptziel ist es effiziente und sichere Backups zu erstellen
# auf Debian installierbar mit:
apt update && apt install borgbackup
# auf Fedora installierbar mit
dnf install borgbackup
- CLI-Tool für Linux/Unix
- Deduplizierung auf Blockebene
- Kompression (zstd, lz4, etc.)
- Verschlüsselung (AES-CTR + HMAC)
- SSH-fähig, mountbare Archive
# Initialisiere Backup im Ordner /mnt/backup mit encryption modus repokey und hasfunktion blake2
borg init --encryption=repokey-blake2 /mnt/backup
borg create /mnt/backup::mybackup-2025-06-11 /etc /home
borg list /mnt/backup
1.4 Welche Strategie verwendet Borg?
- Borg kombiniert inkrementelle Backups mit Deduplizierung:
- Jedes neue Archiv speichert nur neue/veränderte Datenblöcke
- Archivierung ist schnell und platzsparend
- Wiederherstellung möglich auf Datei-, Verzeichnis- oder Komplett-Ebene
borg extract /mnt/backup::mybackup-2025-06-11 etc/hosts
1.5 Ansible – Infrastrukturautomatisierung
- Konfiguriert Systeme deklarativ über YAML
- Idempotent & agentenlos
- Ideal zur Integration von Backup-Prozessen
1.6 Beispielstruktur
inventories/
hosts.ini
roles/
borg/
tasks/
main.yml
files/
run_backup.sh
borg-playbook.yaml
1.7 Beispiel: run_backup.sh
#!/bin/bash
export BORG_REPO=/mnt/backup
export BORG_PASSPHRASE='testpass'
# Merke: normalerweise würden vaults verwendet werden, damit kein plaintextpasswort in einer Datei liegt
borg init --encryption=repokey-blake2 $BORG_REPO 2>/dev/null
borg create --stats \
$BORG_REPO::'{hostname}-{now:%Y-%m-%d_%H:%M}' \
/home/sh1v4/hsa-vpn
borg prune -v \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
$BORG_REPO
1.8 Beispiel: tasks/main.yml
- name: Install Borg
ansible.builtin.package:
name: borgbackup
state: present
- name: Deploy script
ansible.builtin.copy:
src: run_backup.sh
dest: /usr/local/bin/run_backup.sh
mode: '0755'
- name: Add cronjob
ansible.builtin.cron:
name: "Nightly Borg Backup"
job: "/usr/local/bin/run_backup.sh"
hour: 2
minute: 0
Ausführen des Playbooks, in dem die Rolle aufgerufen wird, ist mit folgendem Kommando möglich:
ansible-playbook -i inventories/hosts.ini borg-playbook.yaml # --ask-become-pass
1.9 Fazit
- Borg bietet effiziente, verschlüsselte, inkrementelle Backups
- Ansible: automatisiert Einrichtung & Zeitplanung
- Robust, nachvollziehbar, skalierbar