Features, die mir in Borg fehlen:
* Client kann Backups löschen, der append-only Mode auf dem Server löst das Problem nicht. [[https://packages.debian.org/bullseye/restic|restic]] kann das.
* der tar-export beim Wiederherstellen kann nicht mit ACLs, XATTRS und BSD-Flags umgehen.
====== Backup Server ======
Voraussetzung:
* per [[ssh]] erreichbar
Pakete:
* Debian (11): ''borgbackup''
===== Benutzer anlegen =====
useradd -rmd /srv/borg -s /bin/sh -p '*' borg
mkdir -m 700 /srv/borg/.ssh
touch /srv/borg/.ssh/authorized_keys
chmod 600 /srv/borg/.ssh/authorized_keys
chown -R borg:borg /srv/borg
====== Backup Client ======
Pakete:
* Debian (11): ''borgbackup''
===== SSH Schlüsselpaar =====
SSH Schlüsselpaar erzeugen:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_borgbackup -C 'borgbackup client1'
Public-Key auf dem Backup Server in der Datei ''/srv/borg/.ssh/authorized_keys'' hinterlegen.
===== Backup Repository anlegen ======
als Benutzer root:
export BORG_REPO='borg@backupserver.example.org:/srv/borg/client1.example.org'
export BORG_RSH='ssh -i ~/.ssh/id_ed25519_borgbackup'
borg init --encryption none
==== Archiv anzeigen =====
borg list
(ist jetzt noch leer)
===== ssh Zugang einschränken =====
command="borg serve --restrict-to-path /srv/borg",restrict ssh-ed25519 AAAA…
===== Backup erzeugen =====
borg create -x --compression zstd --numeric-ids ::client1-{now:%Y-%m-%d} /
==== als Cronjob ====
BORG_REPO='borg@backupserver.example.org:/srv/borg/client1.example.org'
BORG_RSH='ssh -i ~/.ssh/id_ed25519_borgbackup'
13 23 * * * root borg create -x --compression zstd --numeric-ids ::client1-{now:\%Y-\%m-\%d} /
===== Restore =====
Backup auf einem anderen Rechner wiederherstellen.
Zugriff auf den Borg-Server mit dem aktuellen Benutzer:
export BORG_REPO='backupserver.example.org:/srv/borg/client1.example.org'
borg auf dem Server als Benutzer borg ausführen:
export BORG_REMOTE_PATH='sudo -u borg borg'
Backups anzeigen:
borg list
borg list ::client1-2024-08-08
Daten aus Backup wiederherstellen:
mkdir /tmp/restore
cd /tmp/restore
borg extract --progress ::client1-2022-12-03
===== Wie gehts weiter? =====
Wenn das alles geklappt hat, dann gleich noch mal von vorne ohne ''--encryption none''. Schlüssel gut aufbewahren!
Und den cronjob durch [[https://packages.debian.org/bullseye/borgmatic|borgmatic]] ersetzen.