Robuste Darktable-Synchronisation: sequenzieller Ablauf, Versions- und Concurrent-Schutz

- Race Condition behoben: Pre-Sync wird vollstaendig abgewartet bevor Darktable startet
- Post-Sync nach Schliessen von Darktable eingefuehrt (bisher fehlend)
- .env aus festem Pfad ~/.config/darktable-sync/.env geladen (nicht mehr relativ)
- Server-Erreichbarkeit per SSH statt ping (Firewall-sicher)
- Darktable-Versionscheck (Major.Minor) vor Download mit Abbruch bei Konflikt
- DB-Backup vor jedem Download (library.db.bak, data.db.bak)
- sync_pending-Marker bei Offline/Fehler, Hinweis beim naechsten Start
- darktable.active-Marker auf Server fuer Concurrent-Erkennung
- Lock-Dateien vom Sync ausgeschlossen
- systemd-Timer entfernt, Service bleibt als manueller Trigger
- Gemeinsame Hilfsfunktionen in darktable_common.sh extrahiert
- 20 BATS-Tests mit vollstaendigem Stub-System ohne GUI-Dialoge

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-19 19:41:26 +02:00
parent 3bdd26ed81
commit 6a6ce52cf9
21 changed files with 777 additions and 201 deletions
+15 -6
View File
@@ -1,13 +1,22 @@
# Server Connection Settings
SERVER_USER="your_nas_user"
# Konfiguration fuer darktable-sync
# Vorlage nach ~/.config/darktable-sync/.env kopieren:
# cp .env.example ~/.config/darktable-sync/.env
# chmod 600 ~/.config/darktable-sync/.env
# Server-Verbindung
SERVER_USER="your_server_user"
SERVER_SSH_PORT=22
SERVER_IP="192.168.1.100"
# Server Paths
SERVER_DB_DIR="/path/on/nas/darktable_db"
SERVER_PHOTO_DIR="/path/on/nas/photo_library"
# Pfade auf dem Server
SERVER_DB_DIR="/path/on/server/darktable_db"
SERVER_PHOTO_DIR="/path/on/server/photo_library"
# Local Paths
# Lokale Pfade
LOCAL_PHOTO_DIR="$HOME/Pictures/raw"
LOCAL_DARKTABLE_DB_DIR="$HOME/.config/darktable"
BIN_DIR="$HOME/.local/bin"
# Aufrufpfade (normalerweise nicht aendern)
DARKTABLE_BIN="darktable"
SYNC_BIN="$HOME/.local/bin/darktable_sync.sh"