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>
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>
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>
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>
- .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>