Files
2026-04-27 17:45:35 +02:00

57 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
log() {
echo "[$(date '+%F %T')] $*"
}
fail() {
log "$*"
exit 1
}
upload() {
local SRC=$1
local DEST=$2
log "☁️ Upload: $SRC$DEST"
rclone copy "$SRC" "$DEST" \
--transfers=2 \
--checkers=4 \
--retries=5 \
--low-level-retries=10 \
--progress \
|| fail "Upload fehlgeschlagen: $SRC"
}
# -----------------------------
# Alte Backups behalten, nur X bleiben
# -----------------------------
cleanup_keep_latest() {
local REMOTE_PATH=$1
local KEEP_COUNT=$2
log "🧹 Prüfe alte Backups auf $REMOTE_PATH, behalte nur die letzten $KEEP_COUNT..."
# Liste aller Backups, älteste zuerst
local BACKUPS
BACKUPS=$(rclone lsf "$REMOTE_PATH" --dirs-only --max-depth 1 | sort)
local TOTAL=$(echo "$BACKUPS" | wc -l)
if (( TOTAL <= KEEP_COUNT )); then
log "✅ Nur $TOTAL Backups vorhanden, nichts zu löschen"
return
fi
# Alte Backups ermitteln
local TO_DELETE_COUNT=$((TOTAL - KEEP_COUNT))
local TO_DELETE=$(echo "$BACKUPS" | head -n "$TO_DELETE_COUNT")
for b in $TO_DELETE; do
log "🗑️ Lösche altes Backup: $REMOTE_PATH/$b"
rclone delete "$REMOTE_PATH/$b" --rmdirs || log "⚠️ Fehler beim Löschen von $b"
done
log "✅ Alte Backups bereinigt"
}