- .env-Verschiebung aus Projektverzeichnis wird angeboten und bei Bestätigung automatisch ausgeführt
- Lokales Foto-Verzeichnis wird interaktiv abgefragt (mit Hinweis falls es bereits existiert)
- Ausführlicher Hinweis nach Anlegen der Default-.env mit Pflichtfeldern und nächsten Schritten
- bats-Hinweis entfernt (nur für Entwickler relevant)
- Tests: Umlaut-Mismatch in security.bats behoben, teardown() für Lock-Isolation ergänzt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ohne Flags führt darktable_sync.sh jetzt einen Trockenlauf durch:
- Banner mit Hinweis und Bestätigungsabfrage vor dem Start
- rsync läuft mit --dry-run (keine Dateiänderungen)
- Keine destruktiven Operationen: kein Backup, kein Token-Schreiben,
kein sync_pending entfernen
- Zusammenfassung nach Richtung (Upload/Download) und Aktion
(neu/aktualisiert/gelöscht) aufgeschlüsselt
- Optionale Detailansicht: Dateien gruppiert nach Typ (Foto, XMP,
Datenbank, Video, Sonstiges)
Mit --execute oder -e wird der echte Sync wie bisher ausgeführt.
Desktop-Entry und Systemd-Service auf --execute aktualisiert.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
12 neue Tests prüfen: classify_filetype gegen Injection, format_rsync_details
mit manipulierten Logs, RSYNC_DRY_FLAG-Isolation, Trockenlauf schreibt keine
Tokens/Versionsdateien, DRY_RUN_SKIP_CONFIRM-Grenzen, unbekannte Argumente.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Reduziere Dateizugriffe von 12 auf 2 durch Pufferung der Log-Inhalte.
Liest Upload- und Download-Logs jeweils einmal, statt sie 6x zu lesen.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Gelöschte Dateien werden beim Download ins Backup-Verzeichnis verschoben
(${LOCAL_PHOTO_DIR}-bak, ${LOCAL_DARKTABLE_DB_DIR}-bak) statt permanent
gelöscht. Upload verwendet --delete ohne Backup. Backups älter als 2 Jahre
werden automatisch bereinigt. Safeguard verhindert --delete bei leerem
Quellverzeichnis. validate_path prüft jetzt auch lokale Pfade.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
martin
merged commit 0dd2464108 into main2026-04-21 07:12:11 +02:00
martin
deleted branch feat/sync-delete-with-backup2026-04-21 07:12:11 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Zusammenfassung
Diese PR implementiert einen Drei-Schichten-Sicherheitsansatz für die Synchronisation:
1. Trockenlauf als Standard (Fail-Safe)
--executeoder-eFlag für echten Datenabgleich erforderlichDRY_RUN_SKIP_CONFIRM=1überspring bar)2. Lokale Backups vor Downloads (Data Protection)
-bakVerzeichnisse verschoben--deleteFlag entfernt nur gelöschte Dateien von Server (nicht lokal)3. Umfangreiche Validierung (Security)
Geänderte Dateien
Akzeptanzkriterien
Test-Ergebnisse
Alle 63 Tests bestanden (0 Fehler)
Gelöschte Dateien werden beim Download ins Backup-Verzeichnis verschoben (${LOCAL_PHOTO_DIR}-bak, ${LOCAL_DARKTABLE_DB_DIR}-bak) statt permanent gelöscht. Upload verwendet --delete ohne Backup. Backups älter als 2 Jahre werden automatisch bereinigt. Safeguard verhindert --delete bei leerem Quellverzeichnis. validate_path prüft jetzt auch lokale Pfade. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>