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ß