#!/bin/bash # Logfile definieren LOGFILE="$HOME/Library/Logs/backup-recordings.log" MAX_LOG_SIZE=$((3 * 1024 * 1024)) # 3MB in Bytes # Funktion zur Überprüfung und Rotation des Logfiles rotate_log() { if [ -f "$LOGFILE" ]; then local size=$(stat -f%z "$LOGFILE" 2>/dev/null || echo 0) if [ "$size" -ge "$MAX_LOG_SIZE" ]; then # Behalte nur die letzten 50% des Logs local keep_lines=$(($(wc -l < "$LOGFILE") / 2)) tail -n "$keep_lines" "$LOGFILE" > "${LOGFILE}.tmp" mv "${LOGFILE}.tmp" "$LOGFILE" fi fi } # Funktion für Log-Ausgaben mit Zeitstempel log() { local message="[$(date '+%Y-%m-%d %H:%M:%S')] $1" echo "$message" | tee -a "$LOGFILE" } # Log rotieren falls nötig rotate_log # Quelle und Ziel definieren SOURCE="/Users/rob/Recordings/Work/" TARGET="/Volumes/rob/recordings/Progress/Work/" MOUNT_POINT="/Volumes/rob" SERVER_ADDRESS="smb://bfds/rob" # Prüfen, ob das Netzlaufwerk gemountet ist if mount | grep -q "$MOUNT_POINT"; then log "Netzlaufwerk ist gemountet. Backup startet..." else log "Netzlaufwerk nicht gefunden. Versuche zu mounten..." osascript -e "mount volume \"$SERVER_ADDRESS\"" # Nach dem Mounten erneut prüfen if mount | grep -q "$MOUNT_POINT"; then log "Netzlaufwerk erfolgreich gemountet." else log "Fehler: Netzlaufwerk konnte nicht gemountet werden." osascript -e 'display notification "Backup fehlgeschlagen! Netzlaufwerk nicht erreichbar." with title "Backup Script"' exit 1 fi fi # Sicherung starten rsync -v -r -l -t -D "$SOURCE" "$TARGET" # -r → Rekursiv kopieren (alle Unterordner & Dateien) # -l → Symbolische Links kopieren # -t → Zeitstempel beibehalten # -D → Geräte- und Sonderdateien kopiere # Erfolgsmeldung ausgeben log "Backup abgeschlossen" # Optional: Notification für macOS anzeigen osascript -e 'display notification "Backup abgeschlossen!" with title "Backup Script"'