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.