Lokaler Modus: Replikation von Pool zu Pool ohne SSH #29

Closed
thorsten.spille wants to merge 0 commits from thorsten.spille/feature-26-local-mode into main AGit

Setzt #26 um.

Problem

Lokale Backups (Pool → Pool auf demselben Host) liefen über ssh auf root@localhost – mit SSH-Dienst, Root-Login auf localhost und Verschlüsselung ohne Nutzen.

Änderung

  • source=local: remote() führt die Befehle für die Quelle lokal per bash -c aus; Cipher-Erkennung entfällt
  • remote-snapshot-manager wird ohne -h aufgerufen (kann lokal schon heute)
  • checkzfs prüft lokal (checkzfs_local=1 wird gesetzt), die Ausgabe landet im lokalen Spool statt per scp
  • Datasets im Ziel werden nie ausgewählt: liegt das Ziel im selben Pool, erben die Replikate bashclub:zsync und würden sonst selbst wieder repliziert (die alte Version tut genau das, siehe Szenario 23)
  • leeres source bricht weiter ab, die Meldung verweist jetzt auf source=local; source=root@localhost funktioniert wie bisher
  • README („Local replication (pool to pool)“, Roadmap-Eintrag entfernt), DOCUMENTATION_DE, Beispiel-Config, CHANGELOG

Tests

  • 23-local-mode: ein Host, Ziel pool/backup im selben Pool mit geerbtem Tag → kein ssh-Aufruf, rsm ohne -h, checkzfs ohne --source, lokaler Spool, Replikate nicht ausgewählt
  • alle anderen 22 Szenarien: verändernde Aufrufe identisch zu main (nur die Meldung bei leerem source geändert)

Closes #26

🤖 Generated with Claude Code

Setzt #26 um. ## Problem Lokale Backups (Pool → Pool auf demselben Host) liefen über ssh auf `root@localhost` – mit SSH-Dienst, Root-Login auf localhost und Verschlüsselung ohne Nutzen. ## Änderung - `source=local`: `remote()` führt die Befehle für die Quelle lokal per `bash -c` aus; Cipher-Erkennung entfällt - `remote-snapshot-manager` wird ohne `-h` aufgerufen (kann lokal schon heute) - checkzfs prüft lokal (`checkzfs_local=1` wird gesetzt), die Ausgabe landet im lokalen Spool statt per scp - **Datasets im Ziel werden nie ausgewählt**: liegt das Ziel im selben Pool, erben die Replikate `bashclub:zsync` und würden sonst selbst wieder repliziert (die alte Version tut genau das, siehe Szenario 23) - leeres `source` bricht weiter ab, die Meldung verweist jetzt auf `source=local`; `source=root@localhost` funktioniert wie bisher - README („Local replication (pool to pool)“, Roadmap-Eintrag entfernt), DOCUMENTATION_DE, Beispiel-Config, CHANGELOG ## Tests - `23-local-mode`: ein Host, Ziel `pool/backup` im selben Pool mit geerbtem Tag → kein ssh-Aufruf, rsm ohne `-h`, checkzfs ohne `--source`, lokaler Spool, Replikate nicht ausgewählt - alle anderen 22 Szenarien: verändernde Aufrufe identisch zu `main` (nur die Meldung bei leerem `source` geändert) Closes #26 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add a local mode for pool to pool replication without ssh
All checks were successful
/ build (pull_request) Successful in 27s
/ test (debian-13) (pull_request) Successful in 44s
/ test (ubuntu-24.04) (pull_request) Successful in 45s
/ test (debian-12) (pull_request) Successful in 53s
/ test (ubuntu-26.04) (pull_request) Successful in 53s
/ publish (pull_request) Has been skipped
/ package (pull_request) Successful in 0s
76b24edc5e
Local backups ran over ssh to root@localhost, which needs the ssh service and
a root login on localhost.

With source=local all commands for the source run on this host via bash
(remote()), the cipher detection is skipped, remote-snapshot-manager runs
without -h (it already supports local operation) and checkzfs checks the local
pools with its output in the local spool. Datasets in the target are never
selected: in the same pool the replicas inherit bashclub:zsync and would
otherwise be replicated again. An empty source still aborts, now pointing to
source=local; source=root@localhost works as before.

Tests: scenario 23 (one host, target in the same pool, no ssh call); all
other scenarios identical to main.

Refs #26

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Manuell nach main gemergt (55ac78a), CI inkl. publish nach testing grün. Schließe den PR.

Manuell nach `main` gemergt (55ac78a), CI inkl. publish nach testing grün. Schließe den PR.
thorsten.spille closed this pull request 2026-10-15 21:06:48 +02:00
All checks were successful
/ build (pull_request) Successful in 27s
/ test (debian-13) (pull_request) Successful in 44s
/ test (ubuntu-24.04) (pull_request) Successful in 45s
/ test (debian-12) (pull_request) Successful in 53s
/ test (ubuntu-26.04) (pull_request) Successful in 53s
/ publish (pull_request) Has been skipped
/ package (pull_request) Successful in 0s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
bashclub/zsync!29
No description provided.