Add PBS client uninstaller script
This commit is contained in:
parent
0a23af10c6
commit
6b6baa3281
1 changed files with 242 additions and 0 deletions
242
pbs-client-uninstaller.sh
Normal file
242
pbs-client-uninstaller.sh
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
CONFIG_DIR="/etc/proxmox-backup-client"
|
||||
|
||||
# Helper functions
|
||||
log() {
|
||||
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1" >&2
|
||||
}
|
||||
|
||||
warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
prompt() {
|
||||
local prompt_text="$1"
|
||||
local default_value="$2"
|
||||
local user_input
|
||||
|
||||
if [ -n "$default_value" ]; then
|
||||
read -p "$(echo -e ${BLUE}${prompt_text}${NC} [${default_value}]: )" user_input
|
||||
echo "${user_input:-$default_value}"
|
||||
else
|
||||
read -p "$(echo -e ${BLUE}${prompt_text}${NC}: )" user_input
|
||||
echo "$user_input"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if running as root
|
||||
check_root() {
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
error "This script must be run as root (use sudo)"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Detect Linux distribution
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
OS=$ID
|
||||
else
|
||||
error "Cannot detect Linux distribution"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OS=$(echo "$OS" | tr '[:upper:]' '[:lower:]')
|
||||
}
|
||||
|
||||
# Confirm uninstallation
|
||||
confirm_uninstall() {
|
||||
echo
|
||||
echo "╔════════════════════════════════════════╗"
|
||||
echo "║ PBS Client Uninstaller ║"
|
||||
echo "╚════════════════════════════════════════╝"
|
||||
echo
|
||||
|
||||
warn "This will remove:"
|
||||
echo " - Proxmox Backup Client software"
|
||||
echo " - Systemd service and timer"
|
||||
echo " - Configuration files in $CONFIG_DIR"
|
||||
echo " - Repository configuration"
|
||||
echo
|
||||
info "This will NOT remove:"
|
||||
echo " - Your backups on the PBS server"
|
||||
echo " - Encryption keys in /root/.config/proxmox-backup/"
|
||||
echo
|
||||
|
||||
CONFIRM=$(prompt "Are you sure you want to uninstall? (yes/no)" "no")
|
||||
if [[ "$CONFIRM" != "yes" ]]; then
|
||||
info "Uninstallation cancelled"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
KEEP_ENCRYPTION_KEY=$(prompt "Keep encryption key? (yes/no)" "yes")
|
||||
}
|
||||
|
||||
# Stop and disable systemd service
|
||||
remove_systemd_service() {
|
||||
log "Stopping and disabling systemd services..."
|
||||
|
||||
if systemctl is-active --quiet pbs-backup.timer; then
|
||||
systemctl stop pbs-backup.timer
|
||||
fi
|
||||
|
||||
if systemctl is-enabled --quiet pbs-backup.timer; then
|
||||
systemctl disable pbs-backup.timer
|
||||
fi
|
||||
|
||||
if systemctl is-active --quiet pbs-backup.service; then
|
||||
systemctl stop pbs-backup.service
|
||||
fi
|
||||
|
||||
# Remove service files
|
||||
rm -f /etc/systemd/system/pbs-backup.service
|
||||
rm -f /etc/systemd/system/pbs-backup.timer
|
||||
|
||||
systemctl daemon-reload
|
||||
|
||||
log "Systemd services removed"
|
||||
}
|
||||
|
||||
# Remove configuration
|
||||
remove_config() {
|
||||
log "Removing configuration files..."
|
||||
|
||||
if [ -d "$CONFIG_DIR" ]; then
|
||||
rm -rf "$CONFIG_DIR"
|
||||
log "Configuration directory removed: $CONFIG_DIR"
|
||||
fi
|
||||
|
||||
# Remove encryption key if requested
|
||||
if [[ "$KEEP_ENCRYPTION_KEY" == "no" ]]; then
|
||||
if [ -d /root/.config/proxmox-backup ]; then
|
||||
rm -rf /root/.config/proxmox-backup
|
||||
log "Encryption keys removed"
|
||||
fi
|
||||
|
||||
# Remove paper backups
|
||||
rm -f /root/pbs-encryption-key-*.txt
|
||||
else
|
||||
warn "Encryption keys preserved in /root/.config/proxmox-backup/"
|
||||
warn "Paper backups preserved: /root/pbs-encryption-key-*.txt"
|
||||
fi
|
||||
}
|
||||
|
||||
# Uninstall PBS client on Ubuntu/Debian
|
||||
uninstall_debian_based() {
|
||||
log "Uninstalling PBS client on $OS..."
|
||||
|
||||
if dpkg -l | grep -q proxmox-backup-client; then
|
||||
apt-get remove -y proxmox-backup-client
|
||||
apt-get autoremove -y
|
||||
log "PBS client package removed"
|
||||
fi
|
||||
|
||||
# Remove repository files
|
||||
rm -f /etc/apt/sources.list.d/pbs-client.list
|
||||
rm -f /etc/apt/sources.list.d/focal-security.list
|
||||
|
||||
# Remove GPG keys
|
||||
rm -f /etc/apt/trusted.gpg.d/proxmox-release-*.gpg
|
||||
|
||||
apt-get update -qq
|
||||
|
||||
log "Repository configuration removed"
|
||||
}
|
||||
|
||||
# Uninstall PBS client on Arch
|
||||
uninstall_arch() {
|
||||
log "Uninstalling PBS client on Arch Linux..."
|
||||
|
||||
# Get the user who invoked sudo
|
||||
if [ -n "$SUDO_USER" ]; then
|
||||
REAL_USER="$SUDO_USER"
|
||||
else
|
||||
warn "Cannot determine original user, attempting removal as root"
|
||||
REAL_USER="root"
|
||||
fi
|
||||
|
||||
if pacman -Q proxmox-backup-client-bin &>/dev/null; then
|
||||
if [ "$REAL_USER" != "root" ]; then
|
||||
sudo -u "$REAL_USER" yay -R --noconfirm proxmox-backup-client-bin
|
||||
else
|
||||
pacman -R --noconfirm proxmox-backup-client-bin
|
||||
fi
|
||||
log "PBS client package removed"
|
||||
elif pacman -Q proxmox-backup-client &>/dev/null; then
|
||||
if [ "$REAL_USER" != "root" ]; then
|
||||
sudo -u "$REAL_USER" yay -R --noconfirm proxmox-backup-client
|
||||
else
|
||||
pacman -R --noconfirm proxmox-backup-client
|
||||
fi
|
||||
log "PBS client package removed"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main uninstall function
|
||||
uninstall_pbs_client() {
|
||||
case "$OS" in
|
||||
ubuntu|debian)
|
||||
uninstall_debian_based
|
||||
;;
|
||||
arch|archlinux)
|
||||
uninstall_arch
|
||||
;;
|
||||
*)
|
||||
warn "Unknown distribution: $OS"
|
||||
warn "Manual package removal may be required"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Show completion message
|
||||
show_completion() {
|
||||
echo
|
||||
echo "======================================"
|
||||
echo " Uninstallation Complete"
|
||||
echo "======================================"
|
||||
echo
|
||||
log "PBS client has been uninstalled"
|
||||
|
||||
if [[ "$KEEP_ENCRYPTION_KEY" == "yes" ]]; then
|
||||
info "Encryption keys preserved:"
|
||||
echo " /root/.config/proxmox-backup/encryption-key.json"
|
||||
echo " /root/pbs-encryption-key-*.txt"
|
||||
echo
|
||||
warn "Remember to backup these keys before removing the system!"
|
||||
fi
|
||||
|
||||
info "Your backups on the PBS server remain intact"
|
||||
info "You can reinstall the client at any time to access them"
|
||||
echo
|
||||
}
|
||||
|
||||
# Main execution
|
||||
main() {
|
||||
check_root
|
||||
detect_distro
|
||||
confirm_uninstall
|
||||
remove_systemd_service
|
||||
remove_config
|
||||
uninstall_pbs_client
|
||||
show_completion
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Loading…
Reference in a new issue