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¶
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 userbenutzernameauf 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)¶
Lösung:
- Prüfen Sie, ob der SSH-Key korrekt hinterlegt ist:
ssh -i ~/.ssh/id_ed25519 benutzername@zsend.de - Stellen Sie sicher, dass der Public Key in Ihrer zsend Verwaltung eingetragen wurde.
Dataset 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¶
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¶
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.