Initial backup import
This commit is contained in:
86
root/backup-config/run-backup-and-push.sh
Executable file
86
root/backup-config/run-backup-and-push.sh
Executable file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
BASE_DIR="/root/backup-config"
|
||||
BACKUP_DIR="$BASE_DIR/backup"
|
||||
BACKUP_SCRIPT="$BASE_DIR/backup-config.sh"
|
||||
LOGFILE="/var/log/backup-config-run.log"
|
||||
BRANCH="DockerDMZ_Configfiles"
|
||||
|
||||
log() {
|
||||
printf '%s %s\n' "$(date '+%F %T')" "$1" | tee -a "$LOGFILE"
|
||||
}
|
||||
|
||||
main() {
|
||||
if [[ ! -x "$BACKUP_SCRIPT" ]]; then
|
||||
echo "Backup-Skript nicht gefunden oder nicht ausführbar: $BACKUP_SCRIPT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
log "INFO: Starte Backup"
|
||||
"$BACKUP_SCRIPT"
|
||||
log "INFO: Backup beendet"
|
||||
|
||||
cd "$BACKUP_DIR"
|
||||
|
||||
if ! command -v git >/dev/null 2>&1; then
|
||||
log "ERROR: Git ist nicht installiert"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d .git ]]; then
|
||||
log "INFO: Git-Repository wird initialisiert"
|
||||
git init
|
||||
fi
|
||||
|
||||
# Branch aktivieren oder anlegen
|
||||
if git show-ref --verify --quiet "refs/heads/$BRANCH"; then
|
||||
git checkout "$BRANCH" >/dev/null 2>&1
|
||||
log "INFO: Git-Branch aktiviert: $BRANCH"
|
||||
else
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||
git checkout -b "$BRANCH" >/dev/null 2>&1
|
||||
else
|
||||
git checkout --orphan "$BRANCH" >/dev/null 2>&1
|
||||
fi
|
||||
log "INFO: Git-Branch erstellt: $BRANCH"
|
||||
fi
|
||||
|
||||
git add -A
|
||||
|
||||
if git diff --cached --quiet; then
|
||||
log "INFO: Keine neuen Dateiinhalte für Commit"
|
||||
else
|
||||
git commit -m "Config-Backup $(hostname) $(date '+%F %T')"
|
||||
log "INFO: Commit erstellt"
|
||||
fi
|
||||
|
||||
if ! git remote get-url origin >/dev/null 2>&1; then
|
||||
log "WARN: Kein Remote 'origin' konfiguriert, Push übersprungen"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Remote-Infos aktualisieren
|
||||
git fetch origin "$BRANCH" >/dev/null 2>&1 || true
|
||||
|
||||
# Falls der Remote-Branch noch nicht existiert
|
||||
if ! git ls-remote --exit-code --heads origin "$BRANCH" >/dev/null 2>&1; then
|
||||
git push -u origin "$BRANCH"
|
||||
log "INFO: Initialer Push des Branches erfolgreich"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Prüfen, ob lokale Commits noch nicht gepusht wurden
|
||||
AHEAD_COUNT="$(git rev-list --count "origin/$BRANCH..$BRANCH" 2>/dev/null || echo 0)"
|
||||
|
||||
if [[ "$AHEAD_COUNT" -gt 0 ]]; then
|
||||
git push origin "$BRANCH"
|
||||
log "INFO: Push erfolgreich ($AHEAD_COUNT lokale Commits übertragen)"
|
||||
else
|
||||
log "INFO: Kein Push nötig, Remote ist aktuell"
|
||||
fi
|
||||
}
|
||||
|
||||
main
|
||||
Reference in New Issue
Block a user