projekte / zsync

bashclub-zsync 2.0

Pull-Replikation von ZFS-Datasets auf einen Backupserver: inkrementell, auch verschlüsselt, fortsetzbar – mit Aufbewahrung, Checkmk-Monitoring und Restore. Der Backupserver holt die Daten; die Quelle hat keinen Zugriff auf das Backup.

2.0 steht kurz vor dem Release

Jeder Stand von main landet nach den automatischen Tests im Kanal testing – dort läuft 2.0 schon heute. Im Kanal release liegt bis zum Release noch 1.0.19; das Update auf 2.0 übernimmt bestehende Konfigurationen.

Neu in 2.0

Aus dem Skript für den Cronjob wird ein Werkzeugkasten für den ganzen Lebenszyklus eines Backups.

Geführte Einrichtung

bashclub-zsync-setup fragt Quelle und Ziel ab, richtet die Quelle über einen einmaligen SSH-Zugang ein und legt Konfiguration und systemd-Timer an.

Restore eingebaut

bashclub-zsync-restore: einzelne Dateien, Datasets und VM-Disks oder der ganze Server – als Job im Hintergrund mit Fortschritt, Prüfbericht und Fortsetzen.

Monitoring je Dataset

Checkmk-Services für jede Replik direkt aus zsync: Alter, Snapshots auf Quelle und Ziel, letzte Replikation. checkzfs ist nur noch empfohlen.

Abgeschottete Quelle

Ein Benutzer je Replikation mit eigenem Schlüssel, beschränkt auf Adresse und Befehle; ZFS-Rechte per zfs allow – Betrieb ohne root möglich.

Robuste Ketten

Abgebrochene Übertragungen laufen weiter, Holds und Bookmarks schützen die Basis, ein Rollback auf der Quelle führt zu einer neuen Kette statt zum Stillstand.

Aufbewahrung auf dem Ziel

Pro Label festlegen, wie viele Snapshots der Backupserver behält (daily=30) – Löschen auf der Quelle verkleinert das Backup nicht.

Wartung mit Überblick

bashclub-zsync-maintenance sammelt offene Entscheidungen aller Konfigurationen und zeigt Vorschau und Befehle vor jeder Aktion.

Wechseldatenträger

bashclub-zsync-disk bereitet Platten vor, optional mit LUKS2; das Backup startet beim Anstecken. Restore davon auf jedem Host.

Dazu Hooks vor und nach einem Lauf, Bandbreitenlimit, Kaskaden über mehrere Backupserver und eine Schnittstelle für andere Werkzeuge. Ab 2.0 steht zsync unter der GPL-3.0-or-later. Alle Änderungen im Changelog.

Installation

zsync wird nur auf dem Backupserver installiert. Die Quellen brauchen ZFS und SSH-Zugang. Pakete für Proxmox VE 8/9, Proxmox Backup Server, Debian 12/13 und Ubuntu 24.04/26.04; TrueNAS SCALE per Handinstallation (Handbuch).

  1. Nur Debian: contrib einschalten (für zfsutils-linux und zfs-auto-snapshot; Proxmox VE und Ubuntu haben es schon).
    sed -i '/^Components:/{/contrib/!s/$/ contrib/}' /etc/apt/sources.list.d/debian.sources
  2. bashclub-Paketquelle einbinden und installieren – Debian 13, Proxmox VE 9, Ubuntu. Der Codename kommt aus /etc/os-release, die Befehle lassen sich so kopieren.
    wget -O- https://apt.bashclub.org/gpg/bashclub.pub | gpg --dearmor > /usr/share/keyrings/bashclub-archive-keyring.gpg
    cat > /etc/apt/sources.list.d/bashclub.sources << EOF
    Types: deb
    URIs: https://apt.bashclub.org/release
    Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
    Components: main
    Signed-By: /usr/share/keyrings/bashclub-archive-keyring.gpg
    EOF
    apt update
    apt install bashclub-zsync
    Debian 12 und Proxmox VE 8 im einzeiligen Format:
    wget -O- https://apt.bashclub.org/gpg/bashclub.pub | gpg --dearmor > /usr/share/keyrings/bashclub-archive-keyring.gpg
    echo "deb [signed-by=/usr/share/keyrings/bashclub-archive-keyring.gpg] https://apt.bashclub.org/release $(. /etc/os-release && echo "$VERSION_CODENAME") main" > /etc/apt/sources.list.d/bashclub.list
    apt update
    apt install bashclub-zsync
  3. Einrichten: bashclub-zsync-setup. Welche Datasets repliziert werden, bestimmt auf der Quelle die Property bashclub:zsync (all, subvols oder exclude).
  4. 2.0 schon jetzt testen: in der Paketquelle release durch testing ersetzen, dann apt update && apt install bashclub-zsync. Für Backupserver in Produktion lieber das Release abwarten.

Weiter

Konzept, Szenarien (LAN, lokal, Wechseldatenträger, Offsite, Kaskade, TrueNAS), Betrieb, Restore im Notfall und alle Parameter stehen im Handbuch – ohne Login lesbar.