57 lines
1.2 KiB
Bash
Executable File
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"
|
|
} |