From 1e1265ef1b2c37f527aa8e65db4fb47cd1f38d12 Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Wed, 15 Apr 2026 13:49:31 -0500 Subject: [PATCH] batch imapsync --- DMS/batch_imapsync.sh | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 DMS/batch_imapsync.sh diff --git a/DMS/batch_imapsync.sh b/DMS/batch_imapsync.sh new file mode 100644 index 0000000..ac66172 --- /dev/null +++ b/DMS/batch_imapsync.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# batch_imapsync.sh - Führt IMAP-Sync für alle User im Hintergrund aus +# Format der CSV: email@domain.com,SecretPassword123 + +HOST1=$1 +HOST2=$2 +CSV_FILE=$3 + +if [ -z "$HOST1" ] || [ -z "$HOST2" ] || [ -z "$CSV_FILE" ]; then + echo "Usage: $0 " + echo "Beispiel: $0 secure.emailsrvr.com 147.93.132.244 stxmaterials.csv" + exit 1 +fi + +# ====================================================================== +# Die eigentliche Sync-Funktion (wird in den Hintergrund geschickt) +# ====================================================================== +run_sync_jobs() { + TIMESTAMP=$(date +%Y%m%d_%H%M%S) + LOG_DIR="sync_logs_$TIMESTAMP" + mkdir -p "$LOG_DIR" + + echo "Beginne Sync-Lauf am $(date)" > "batch_master_${TIMESTAMP}.log" + + while IFS=, read -r email password; do + email=$(echo "$email" | tr -d '\r' | xargs) + password=$(echo "$password" | tr -d '\r' | xargs) + + [ -z "$email" ] && continue + + LOGFILE="$LOG_DIR/imapsync_${email}.log" + echo "[$(date)] Syncing $email -> $LOGFILE" >> "batch_master_${TIMESTAMP}.log" + + # Führe Docker imapsync für den aktuellen User aus + docker run --rm -i gilleslamiral/imapsync imapsync \ + --host1 "$HOST1" --user1 "$email" --password1 "$password" --ssl1 \ + --host2 "$HOST2" --user2 "$email" --password2 "$password" --ssl2 \ + --automap > "$LOGFILE" 2>&1 + + done < "$CSV_FILE" + + echo "Alle Sync-Jobs beendet am $(date)" >> "batch_master_${TIMESTAMP}.log" +} + +# ====================================================================== +# Skript-Start: Entkopplung vom Terminal +# ====================================================================== +echo "🚀 Starte Batch-IMAP-Sync im Hintergrund..." + +# Rufe die Funktion auf, leite alle restlichen Ausgaben ins Nichts und schicke sie in den Hintergrund (&) +run_sync_jobs /dev/null 2>&1 & + +echo "✅ Der Job läuft jetzt autark im Hintergrund (sequenziell)." +echo "Du kannst das SSH-Terminal jetzt bedenkenlos schließen!" +echo "Überwache den Gesamtfortschritt mit:" +echo " tail -f batch_master_*.log" +echo "Oder die Details eines einzelnen Postfachs mit:" +echo " tail -f sync_logs_*/imapsync_.log" \ No newline at end of file