First step into separated scripts
This commit is contained in:
Executable
+109
@@ -0,0 +1,109 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Default-Konfiguration (per ENV überschreibbar)
|
||||
SERVER_USER="${SERVER_USER}"
|
||||
SERVER_SSH_PORT="${SERVER_SSH_PORT}"
|
||||
SERVER_IP="${SERVER_IP}"
|
||||
SERVER_DB_DIR="${SERVER_DB_DIR}"
|
||||
SERVER_PHOTO_DIR="${SERVER_PHOTO_DIR}"
|
||||
LOCAL_PHOTO_DIR="${PHOTO_DIR}"
|
||||
LOCAL_DARKTABLE_DB_DIR="${DARKTABLE_DB_DIR}"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
|
||||
}
|
||||
|
||||
count_synced_files() {
|
||||
local LOG="$1"
|
||||
local DIRECTION="$2"
|
||||
local COUNT=0
|
||||
|
||||
case "$DIRECTION" in
|
||||
up)
|
||||
COUNT=$(grep -E '^>f|cd' "$LOG" | wc -l)
|
||||
;;
|
||||
down)
|
||||
COUNT=$(grep -E '^<f|cd' "$LOG" | wc -l)
|
||||
;;
|
||||
esac
|
||||
echo "$COUNT"
|
||||
}
|
||||
|
||||
SCRIPT_NAME=$(basename "$0")
|
||||
LOCKFILE="/tmp/${SCRIPT_NAME}.lock"
|
||||
|
||||
if [ -e "$LOCKFILE" ]; then
|
||||
echo "Script is already running or delete $LOCKFILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
touch "$LOCKFILE"
|
||||
trap "rm -f '$LOCKFILE'" EXIT
|
||||
|
||||
SHOW_NOTIFY_START_STOP=false
|
||||
if [[ "$1" == "--with-notify-start-stop" ]]; then
|
||||
SHOW_NOTIFY_START_STOP=true
|
||||
fi
|
||||
|
||||
if ping -c 1 "$SERVER_IP" &>/dev/null; then
|
||||
export DISPLAY=:0
|
||||
SYNC_LOG=$(mktemp)
|
||||
log "Server is reachable – starting sync..."
|
||||
log "Log file: $SYNC_LOG"
|
||||
|
||||
if [ "$SHOW_NOTIFY_START_STOP" = true ]; then
|
||||
notify-send "Darktable Sync" "Sync started..." -t 3000
|
||||
fi
|
||||
|
||||
log "Uploading Darktable DB to Server..."
|
||||
UPLOAD_LOG1=$(mktemp)
|
||||
rsync -uavh --itemize-changes -e "ssh -p $SERVER_SSH_PORT" \
|
||||
"$LOCAL_DARKTABLE_DB_DIR/" "$SERVER_USER@$SERVER_IP:$SERVER_DB_DIR/" \
|
||||
2>&1 | tee -a "$SYNC_LOG" "$UPLOAD_LOG1"
|
||||
SENT1=$(count_synced_files "$UPLOAD_LOG1" "up")
|
||||
rm "$UPLOAD_LOG1"
|
||||
|
||||
log "Uploading photos to Server..."
|
||||
UPLOAD_LOG2=$(mktemp)
|
||||
rsync -uavh --itemize-changes -e "ssh -p $SERVER_SSH_PORT" \
|
||||
"$LOCAL_PHOTO_DIR/" "$SERVER_USER@$SERVER_IP:$SERVER_PHOTO_DIR/" \
|
||||
2>&1 | tee -a "$SYNC_LOG" "$UPLOAD_LOG2"
|
||||
SENT2=$(count_synced_files "$UPLOAD_LOG2" "up")
|
||||
rm "$UPLOAD_LOG2"
|
||||
|
||||
log "Downloading DB back from Server..."
|
||||
DOWNLOAD_LOG1=$(mktemp)
|
||||
rsync -uavh --itemize-changes -e "ssh -p $SERVER_SSH_PORT" \
|
||||
"$SERVER_USER@$SERVER_IP:$SERVER_DB_DIR/" "$LOCAL_DARKTABLE_DB_DIR/" \
|
||||
2>&1 | tee -a "$SYNC_LOG" "$DOWNLOAD_LOG1"
|
||||
RECEIVED1=$(count_synced_files "$DOWNLOAD_LOG1" "down")
|
||||
rm "$DOWNLOAD_LOG1"
|
||||
|
||||
log "Downloading photos from Server..."
|
||||
DOWNLOAD_LOG2=$(mktemp)
|
||||
rsync -uavh --itemize-changes -e "ssh -p $SERVER_SSH_PORT" \
|
||||
"$SERVER_USER@$SERVER_IP:$SERVER_PHOTO_DIR/" "$LOCAL_PHOTO_DIR/" \
|
||||
2>&1 | tee -a "$SYNC_LOG" "$DOWNLOAD_LOG2"
|
||||
RECEIVED2=$(count_synced_files "$DOWNLOAD_LOG2" "down")
|
||||
rm "$DOWNLOAD_LOG2"
|
||||
|
||||
if [ "$SHOW_NOTIFY_START_STOP" = true ]; then
|
||||
notify-send "Darktable Sync" "Sync finished." -t 3000
|
||||
fi
|
||||
|
||||
TOTAL_SENT=$((SENT1 + SENT2))
|
||||
TOTAL_RECEIVED=$((RECEIVED1 + RECEIVED2))
|
||||
|
||||
if [ "$TOTAL_SENT" -gt 0 ] || [ "$TOTAL_RECEIVED" -gt 0 ]; then
|
||||
log "Uploaded: $TOTAL_SENT files"
|
||||
log "Downloaded: $TOTAL_RECEIVED files"
|
||||
notify-send "Darktable Sync" "↑ $TOTAL_SENT uploaded | ↓ $TOTAL_RECEIVED downloaded" -t 10000
|
||||
else
|
||||
log "No changes detected."
|
||||
fi
|
||||
|
||||
rm -f "$SYNC_LOG"
|
||||
else
|
||||
log "Server not reachable – skipping sync."
|
||||
fi
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Konfiguration (per ENV überschreibbar)
|
||||
DARKTABLE_BIN="${DARKTABLE_BIN:-darktable}"
|
||||
SYNC_BIN="${SYNC_BIN:-darktable_sync.sh}"
|
||||
|
||||
# Sync im Hintergrund starten
|
||||
"$SYNC_BIN" --with-notify-start-stop &
|
||||
|
||||
# Darktable starten
|
||||
exec "$DARKTABLE_BIN" "$@"
|
||||
Reference in New Issue
Block a user