Dateien nach "/" hochladen

This commit is contained in:
2025-12-30 18:38:02 +01:00
parent c45da891d7
commit 8f8f50a036
4 changed files with 254 additions and 0 deletions

127
09_uninstall.sh Normal file
View File

@@ -0,0 +1,127 @@
#!/usr/bin/env bash
set -Eeuo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
CFG="$SCRIPT_DIR/config.sh"
SERVICE_NAME="raspi-backup.service"
TIMER_NAME="raspi-backup.timer"
SERVICE_PATH="/etc/systemd/system/${SERVICE_NAME}"
TIMER_PATH="/etc/systemd/system/${TIMER_NAME}"
LOG_FILE="$SCRIPT_DIR/raspi-backup.log"
LOCK_FILE="$SCRIPT_DIR/.raspi-backup.lock"
die(){ echo "ERROR: $*" >&2; exit 1; }
host_short(){ hostname -s 2>/dev/null || hostname 2>/dev/null || echo "raspi"; }
echo "== Uninstall =="
echo
echo "Das Script entfernt:"
echo "- systemd Timer/Service"
echo "- Log/Lock"
echo "- config.sh"
echo "- SSH Backup-Key + Alias (nur Backup-bezogen)"
echo
echo "NICHT entfernt:"
echo "- andere SSH-Keys"
echo "- Backup-Daten auf dem NAS"
echo
read -r -p "Wirklich deinstallieren? (ja/nein): " ans
[[ "$ans" == "ja" ]] || { echo "Abgebrochen."; exit 0; }
# ------------------------------------------------------------
# config laden (für KEY_TYPE, ALIAS_PREFIX, SSH_USER)
# ------------------------------------------------------------
if [[ -f "$CFG" ]]; then
# shellcheck disable=SC1090
source "$CFG"
else
echo "config.sh fehlt fahre mit Best-Effort fort."
fi
SSH_USER="${SSH_USER:-admin}"
KEY_TYPE="${KEY_TYPE:-ed25519}"
ALIAS_PREFIX="${ALIAS_PREFIX:-nas}"
hn="$(host_short)"
USER_HOME="$(eval echo "~${SSH_USER}")"
SSH_DIR="${USER_HOME}/.ssh"
KEY_FILE="${SSH_DIR}/id_${KEY_TYPE}_${hn}"
PUB_FILE="${KEY_FILE}.pub"
SSH_CFG="${SSH_DIR}/config"
ALIAS="${ALIAS_PREFIX}-${hn}"
# ------------------------------------------------------------
# systemd entfernen
# ------------------------------------------------------------
if command -v systemctl >/dev/null 2>&1; then
if [[ "${EUID:-$(id -u)}" -eq 0 ]]; then
systemctl disable --now "$TIMER_NAME" >/dev/null 2>&1 || true
rm -f "$SERVICE_PATH" "$TIMER_PATH"
systemctl daemon-reload >/dev/null 2>&1 || true
elif command -v sudo >/dev/null 2>&1; then
sudo bash -c "
systemctl disable --now '$TIMER_NAME' >/dev/null 2>&1 || true
rm -f '$SERVICE_PATH' '$TIMER_PATH'
systemctl daemon-reload >/dev/null 2>&1 || true
" || true
fi
echo "systemd Timer/Service entfernt."
fi
# ------------------------------------------------------------
# SSH Alias entfernen
# ------------------------------------------------------------
if [[ -f "$SSH_CFG" ]] && command -v awk >/dev/null 2>&1; then
tmp="$(mktemp)"
awk -v host="$ALIAS" '
BEGIN {skip=0}
$1=="Host" && $2==host {skip=1; next}
$1=="Host" && $2!=host {skip=0}
skip==0 {print}
' "$SSH_CFG" >"$tmp" && mv "$tmp" "$SSH_CFG"
echo "SSH Alias entfernt: $ALIAS"
fi
# ------------------------------------------------------------
# SSH Keys entfernen (nur Backup-Key)
# ------------------------------------------------------------
rm -f "$KEY_FILE" "$PUB_FILE" 2>/dev/null || true
echo "SSH Backup-Key entfernt:"
echo " $KEY_FILE"
echo " $PUB_FILE"
# ------------------------------------------------------------
# .ssh Ordner ggf. entfernen (nur wenn leer)
# ------------------------------------------------------------
if [[ -d "$SSH_DIR" ]] && [[ -z "$(ls -A "$SSH_DIR")" ]]; then
rmdir "$SSH_DIR"
echo ".ssh Ordner war leer → entfernt."
else
echo ".ssh Ordner bleibt bestehen (enthält weitere Dateien)."
fi
# ------------------------------------------------------------
# config + log + lock entfernen
# ------------------------------------------------------------
rm -f "$CFG" "$LOG_FILE" "$LOCK_FILE" 2>/dev/null || true
echo "config.sh, Log und Lock entfernt."
echo
echo "Uninstall abgeschlossen."
echo
echo "Wenn du auch die Scripts löschen willst:"
echo "rm -f \\"
echo " $SCRIPT_DIR/start.sh \\"
echo " $SCRIPT_DIR/01_setup.sh \\"
echo " $SCRIPT_DIR/02_setup_ssh.sh \\"
echo " $SCRIPT_DIR/03_verify.sh \\"
echo " $SCRIPT_DIR/04_run_backup.sh \\"
echo " $SCRIPT_DIR/05_status.sh \\"
echo " $SCRIPT_DIR/06_logs.sh \\"
echo " $SCRIPT_DIR/07_timer_enable.sh \\"
echo " $SCRIPT_DIR/08_timer_disable.sh \\"
echo " $SCRIPT_DIR/09_uninstall.sh"