setup_Projekt/sync_rsync.sh

40 lines
No EOL
1.3 KiB
Bash
Executable file

#!/bin/bash
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
CONF_FILE="$SCRIPT_DIR/sync.conf"
if [ ! -f "$CONF_FILE" ]; then
zenity --error --text="sync.conf nicht gefunden!"
exit 1
fi
source "$CONF_FILE"
# 1. Passwort abfragen
SSH_PASS=$(zenity --password --title="SSH Authentifizierung" --text="Passwort für $SSH_USER@$SSH_HOST:")
# Abbrechen wenn kein Passwort eingegeben wurde
[ -z "$SSH_PASS" ] && exit 0
LOCAL_DIR="$SCRIPT_DIR/"
# 2. Synchronisation (Download & Upload)
# Wir fügen '-o StrictHostKeyChecking=no' hinzu, damit SSH nicht bei unbekannten Hosts blockiert.
zenity --info --text="Synchronisation wird gestartet..." --timeout=2
# Download
sshpass -p "$SSH_PASS" rsync -auvz -e "ssh -p $SSH_PORT -o StrictHostKeyChecking=no" "$SSH_USER@$SSH_HOST:$REMOTE_DIR" "$LOCAL_DIR" 2>/tmp/rsync_error
# Upload
sshpass -p "$SSH_PASS" rsync -auvz -e "ssh -p $SSH_PORT -o StrictHostKeyChecking=no" "$LOCAL_DIR" "$SSH_USER@$SSH_HOST:$REMOTE_DIR" 2>>/tmp/rsync_error
# 3. Erfolgskontrolle
if [ $? -eq 0 ]; then
zenity --info --title="Erfolg" --text="Synchronisation erfolgreich abgeschlossen!"
else
ERROR_MSG=$(cat /tmp/rsync_error)
zenity --error --title="Fehler" --text="Synchronisation fehlgeschlagen!\n\nDetails:\n$ERROR_MSG"
fi
# Temporäre Fehlerdatei löschen
rm -f /tmp/rsync_error