Files
lokale-scripte/macos/Backup-Recordings/backup-recordings-to-bfds.sh
T
2026-01-27 10:13:18 +01:00

67 lines
2.0 KiB
Bash
Executable File

#!/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"'