Add debian12to13-upgrade.sh
This commit is contained in:
1 parent
4db9aade44
commit
f130500531
1 file changed
+285
@@ -0,0 +1,285 @@
|
||||
#!/bin/bash
|
||||
|
||||
###############################################################################
|
||||
# Script: Debian 12 (Bookworm) naar Debian 13 (Trixie) Upgrade
|
||||
# Beschrijving: Veilige automatische upgrade van Debian 12 naar Debian 13
|
||||
# Auteur: Auto-generated
|
||||
# Datum: $(date +%Y-%m-%d)
|
||||
###############################################################################
|
||||
|
||||
set -euo pipefail # Exit on error, undefined vars, pipe failures
|
||||
|
||||
# Kleuren voor output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Logging
|
||||
LOG_FILE="/var/log/debian-upgrade-$(date +%Y%m%d-%H%M%S).log"
|
||||
exec 1> >(tee -a "$LOG_FILE")
|
||||
exec 2> >(tee -a "$LOG_FILE" >&2)
|
||||
|
||||
# Functies
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Controleer of script als root wordt uitgevoerd
|
||||
check_root() {
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
log_error "Dit script moet als root worden uitgevoerd (gebruik sudo)"
|
||||
exit 1
|
||||
fi
|
||||
log_success "Root check geslaagd"
|
||||
}
|
||||
|
||||
# Controleer huidige Debian versie
|
||||
check_debian_version() {
|
||||
if [[ ! -f /etc/debian_version ]]; then
|
||||
log_error "Dit is geen Debian systeem"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEBIAN_VERSION=$(cat /etc/debian_version)
|
||||
log_info "Huidige Debian versie: $DEBIAN_VERSION"
|
||||
|
||||
if [[ ! -f /etc/os-release ]]; then
|
||||
log_error "Kan /etc/os-release niet lezen"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source /etc/os-release
|
||||
if [[ "$VERSION_CODENAME" != "bookworm" ]]; then
|
||||
log_error "Dit script is alleen voor Debian 12 (Bookworm). Huidige versie: $VERSION_CODENAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "Debian 12 (Bookworm) gedetecteerd"
|
||||
}
|
||||
|
||||
# Controleer schijfruimte
|
||||
check_disk_space() {
|
||||
log_info "Schijfruimte controleren..."
|
||||
AVAILABLE_SPACE=$(df -BG / | awk 'NR==2 {print $4}' | sed 's/G//')
|
||||
|
||||
if [[ $AVAILABLE_SPACE -lt 5 ]]; then
|
||||
log_error "Onvoldoende schijfruimte. Minimaal 5GB vereist, beschikbaar: ${AVAILABLE_SPACE}GB"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "Voldoende schijfruimte beschikbaar: ${AVAILABLE_SPACE}GB"
|
||||
}
|
||||
|
||||
# Maak backup van belangrijke bestanden
|
||||
backup_important_files() {
|
||||
log_info "Backup maken van belangrijke configuratiebestanden..."
|
||||
|
||||
BACKUP_DIR="/root/debian-upgrade-backup-$(date +%Y%m%d-%H%M%S)"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# Backup sources.list
|
||||
if [[ -f /etc/apt/sources.list ]]; then
|
||||
cp /etc/apt/sources.list "$BACKUP_DIR/sources.list.backup"
|
||||
fi
|
||||
|
||||
# Backup sources.list.d directory
|
||||
if [[ -d /etc/apt/sources.list.d ]]; then
|
||||
cp -r /etc/apt/sources.list.d "$BACKUP_DIR/"
|
||||
fi
|
||||
|
||||
# Backup belangrijke configuraties
|
||||
IMPORTANT_FILES=(
|
||||
"/etc/fstab"
|
||||
"/etc/network/interfaces"
|
||||
"/etc/hosts"
|
||||
"/etc/hostname"
|
||||
)
|
||||
|
||||
for file in "${IMPORTANT_FILES[@]}"; do
|
||||
if [[ -f "$file" ]]; then
|
||||
cp "$file" "$BACKUP_DIR/"
|
||||
fi
|
||||
done
|
||||
|
||||
log_success "Backup gemaakt in: $BACKUP_DIR"
|
||||
echo "$BACKUP_DIR" > /tmp/debian-upgrade-backup-location.txt
|
||||
}
|
||||
|
||||
# Update huidige systeem
|
||||
update_current_system() {
|
||||
log_info "Huidige systeem updaten..."
|
||||
|
||||
apt-get update
|
||||
apt-get upgrade -y
|
||||
apt-get dist-upgrade -y
|
||||
|
||||
log_success "Huidige systeem bijgewerkt"
|
||||
}
|
||||
|
||||
# Ruim onnodige packages op
|
||||
cleanup_packages() {
|
||||
log_info "Onnodige packages opruimen..."
|
||||
|
||||
apt-get autoremove -y
|
||||
apt-get autoclean
|
||||
apt-get clean
|
||||
|
||||
log_success "Systeem opgeruimd"
|
||||
}
|
||||
|
||||
# Update sources.list naar Debian 13 (Trixie)
|
||||
update_sources_list() {
|
||||
log_info "Sources.list updaten naar Debian 13 (Trixie)..."
|
||||
|
||||
# Backup originele sources.list
|
||||
cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%Y%m%d)
|
||||
|
||||
# Vervang bookworm door trixie in sources.list
|
||||
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
|
||||
|
||||
# Update ook sources.list.d bestanden
|
||||
if [[ -d /etc/apt/sources.list.d ]]; then
|
||||
find /etc/apt/sources.list.d -type f -name "*.list" -exec sed -i 's/bookworm/trixie/g' {} \;
|
||||
fi
|
||||
|
||||
log_success "Sources.list bijgewerkt naar Debian 13 (Trixie)"
|
||||
}
|
||||
|
||||
# Minimal upgrade (aanbevolen Debian upgrade methode)
|
||||
minimal_upgrade() {
|
||||
log_info "Minimale upgrade uitvoeren..."
|
||||
|
||||
apt-get update
|
||||
|
||||
# Minimal upgrade zoals aanbevolen door Debian
|
||||
apt-get upgrade --without-new-packages -y || true
|
||||
apt-get full-upgrade -y
|
||||
|
||||
log_success "Minimale upgrade voltooid"
|
||||
}
|
||||
|
||||
# Full upgrade
|
||||
full_upgrade() {
|
||||
log_info "Volledige upgrade uitvoeren..."
|
||||
|
||||
apt-get update
|
||||
apt-get full-upgrade -y
|
||||
|
||||
log_success "Volledige upgrade voltooid"
|
||||
}
|
||||
|
||||
# Handleer configuratiebestand wijzigingen
|
||||
handle_config_changes() {
|
||||
log_info "Configuratiebestand wijzigingen verwerken..."
|
||||
|
||||
# Gebruik 'yes' voor standaard opties, maar vraag om bevestiging voor belangrijke wijzigingen
|
||||
# Dit kan interactief zijn, dus we gebruiken DEBIAN_FRONTEND=noninteractive
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Voor belangrijke configuraties, gebruik de oude versie als standaard
|
||||
# Dit voorkomt dat belangrijke configuraties worden overschreven
|
||||
apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" full-upgrade -y || true
|
||||
|
||||
log_success "Configuratiebestand wijzigingen verwerkt"
|
||||
}
|
||||
|
||||
# Final cleanup
|
||||
final_cleanup() {
|
||||
log_info "Finale opruiming..."
|
||||
|
||||
apt-get autoremove -y
|
||||
apt-get autoclean
|
||||
apt-get clean
|
||||
|
||||
log_success "Finale opruiming voltooid"
|
||||
}
|
||||
|
||||
# Verifieer upgrade
|
||||
verify_upgrade() {
|
||||
log_info "Upgrade verifiëren..."
|
||||
|
||||
if [[ -f /etc/os-release ]]; then
|
||||
source /etc/os-release
|
||||
if [[ "$VERSION_CODENAME" == "trixie" ]]; then
|
||||
log_success "Upgrade succesvol! Huidige versie: Debian 13 (Trixie)"
|
||||
return 0
|
||||
else
|
||||
log_warning "Versie check: $VERSION_CODENAME (verwacht: trixie)"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
log_error "Kan /etc/os-release niet lezen"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Main functie
|
||||
main() {
|
||||
log_info "========================================="
|
||||
log_info "Debian 12 naar Debian 13 Upgrade Script"
|
||||
log_info "========================================="
|
||||
log_info "Log bestand: $LOG_FILE"
|
||||
echo ""
|
||||
|
||||
# Pre-upgrade checks
|
||||
check_root
|
||||
check_debian_version
|
||||
check_disk_space
|
||||
|
||||
# Bevestiging vragen
|
||||
echo ""
|
||||
log_warning "LET OP: Dit script zal uw systeem upgraden van Debian 12 naar Debian 13"
|
||||
log_warning "Zorg ervoor dat u een backup heeft gemaakt voordat u doorgaat!"
|
||||
echo ""
|
||||
read -p "Wilt u doorgaan met de upgrade? (ja/nee): " -r
|
||||
echo ""
|
||||
|
||||
if [[ ! $REPLY =~ ^[Jj][Aa]$ ]]; then
|
||||
log_info "Upgrade geannuleerd door gebruiker"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Pre-upgrade stappen
|
||||
backup_important_files
|
||||
update_current_system
|
||||
cleanup_packages
|
||||
|
||||
# Upgrade stappen
|
||||
update_sources_list
|
||||
minimal_upgrade
|
||||
handle_config_changes
|
||||
full_upgrade
|
||||
|
||||
# Post-upgrade stappen
|
||||
final_cleanup
|
||||
verify_upgrade
|
||||
|
||||
echo ""
|
||||
log_success "========================================="
|
||||
log_success "Upgrade proces voltooid!"
|
||||
log_success "========================================="
|
||||
echo ""
|
||||
log_warning "BELANGRIJK: Herstart uw systeem om de upgrade volledig te voltooien:"
|
||||
log_info " sudo reboot"
|
||||
echo ""
|
||||
log_info "Backup locatie: $(cat /tmp/debian-upgrade-backup-location.txt 2>/dev/null || echo 'Onbekend')"
|
||||
log_info "Log bestand: $LOG_FILE"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Script uitvoeren
|
||||
main "$@"
|
||||
Reference in new issue
Block a user