Zum Inhalt

Integration: Linux CLI / Syncoid

Wenn Sie generische Linux-Server (Ubuntu, Debian, RHEL) mit ZFS betreiben, ist das CLI der flexibelste Weg.

Syncoid (Sanoid Suite)

Das Tool syncoid (Teil der Sanoid-Suite) ist der Industriestandard für CLI-Replikation. Es abstrahiert komplexe send/recv Pipes und handhabt Resume-Funktionalität sowie Buffering automatisch.

Installation

apt update && apt install sanoid
# Oder manuell von: https://github.com/jimsalterjrs/sanoid

Befehlsbeispiel: Encrypted Replication

syncoid \
  --no-privilege-elevation \
  --sendoptions="w" \ 
  --compress=zstd-fast \
  tank/docker_volumes \
  benutzername@zsend.de:customer/backups/docker
  • --sendoptions="w": Erzwingt Raw Send (Erhalt der Verschlüsselung). Wenn Ihr Quell-Dataset verschlüsselt ist, bleibt es auch auf dem Ziel verschlüsselt.
  • --compress=zstd-fast: Verwendet Zstandard Kompression für den Transport-Layer (unabhängig von der Storage-Kompression).
  • --no-privilege-elevation: Syncoid wird ohne root-Rechte ausgeführt (da user benutzername auf der Gegenseite kein root ist).

Automatisierung via Cronjob

Für regelmäßige Backups empfiehlt sich ein Cronjob:

# Crontab bearbeiten
crontab -e

# Beispiel: Tägliche Replikation um 02:00 Uhr
0 2 * * * /usr/sbin/syncoid --no-privilege-elevation --sendoptions="w" --compress=zstd-fast tank/docker_volumes benutzername@zsend.de:customer/backups/docker >> /var/log/syncoid.log 2>&1

Logging

Prüfen Sie regelmäßig /var/log/syncoid.log auf Fehler. Alternativ können Sie das Log an ein Monitoring-System weiterleiten.


Manuelles zfs send/recv

Für maximale Kontrolle können Sie auch direkt mit zfs send und zfs recv arbeiten.

Initialer Full-Send (Erstübertragung)

# Snapshot erstellen
zfs snapshot tank/data@backup-$(date +%Y%m%d)

# Übertragung via SSH (mit Kompression und Buffering)
zfs send -w -c tank/data@backup-20260202 | \
  mbuffer -s 128k -m 1G | \
  ssh benutzername@zsend.de "zfs recv -s customer/backups/data"
  • -w: Raw Send (Verschlüsselung beibehalten)
  • -c: Komprimierte Blöcke komprimiert senden (spart CPU)
  • mbuffer: Puffert den Stream für stabilere Übertragung

Inkrementeller Send (Folgeübertragungen)

# Neuen Snapshot erstellen
zfs snapshot tank/data@backup-20260203

# Nur die Differenz übertragen
zfs send -w -c -i tank/data@backup-20260202 tank/data@backup-20260203 | \
  mbuffer -s 128k -m 1G | \
  ssh benutzername@zsend.de "zfs recv -s customer/backups/data"
  • -i @snapshot1 @snapshot2: Sendet nur die Änderungen zwischen den Snapshots

Resume bei Abbruch

Falls eine Übertragung abbricht, können Sie diese fortsetzen:

# Resume-Token auf dem Ziel abrufen (wird vom Support bereitgestellt oder via SSH)
ssh benutzername@zsend.de "zfs get -H receive_resume_token customer/backups/data"

# Übertragung fortsetzen
zfs send -t <resume-token> | ssh benutzername@zsend.de "zfs recv -s customer/backups/data"

Troubleshooting

Permission denied (publickey)

Permission denied (publickey,keyboard-interactive).

Lösung:

  1. Prüfen Sie, ob der SSH-Key korrekt hinterlegt ist: ssh -i ~/.ssh/id_ed25519 benutzername@zsend.de
  2. Stellen Sie sicher, dass der Public Key in Ihrer zsend Verwaltung eingetragen wurde.

Dataset does not exist

cannot receive new filesystem stream: destination 'customer/backups/data' does not exist

Lösung:

  • Das Parent-Dataset existiert nicht oder Sie haben keine Schreibrechte. Kontaktieren Sie den Support, um das Dataset anlegen zu lassen.

Cannot receive: stream is encrypted

cannot receive: stream is encrypted, dataset must be created with 'zfs recv -o encryption=on'

Lösung:

  • Verwenden Sie zfs send -w (Raw Send), damit das Ziel die verschlüsselten Blöcke direkt speichert, ohne den Key zu benötigen.

Snapshot existiert bereits

cannot receive incremental stream: destination has been modified since most recent snapshot

Lösung:

  • Die Datasets sind divergiert. Entweder:
    • Löschen Sie den letzten Snapshot auf dem Ziel (Support kontaktieren)
    • Oder führen Sie einen neuen Full-Send durch

S3 Object Storage

Für die Nutzung des S3-kompatiblen Endpunkts (MinIO) mit Tools wie Restic, rclone oder Duplicati wenden Sie sich bitte an unseren Support. Wir richten Ihren Bucket und die Zugangsdaten individuell ein.

Support kontaktieren

Für S3-spezifische Anfragen (Bucket-Erstellung, Access Keys, Immutability-Konfiguration) erreichen Sie uns unter kontakt@zsend.de oder über das Ticketsystem.