#!/bin/bash # Basisordner mit VMs, z.B. /srv/vbox_storage oder /home/*/VirtualBox VMs # Passe den Pfad hier an deine Umgebung an: BASE_DIRS=("/srv/vbox_storage" "/home") echo "Starte systemweiten Cleanup nicht registrierter VMs..." # Alle registrierten VM-Namen erfassen (mit UUID) mapfile -t registered_vms < <(VBoxManage list vms | awk '{print $1}' | tr -d '"') # Hilfsfunktion: Prüfen ob ein Name in registrierten VMs ist is_registered_vm() { local vmname="$1" for regvm in "${registered_vms[@]}"; do if [[ "$regvm" == "$vmname" ]]; then return 0 fi done return 1 } for base_dir in "${BASE_DIRS[@]}"; do if [[ ! -d "$base_dir" ]]; then continue fi # Suche VM-Ordner rekursiv, z.B. Ordner, die eine *.vbox Datei enthalten find "$base_dir" -type f -name "*.vbox" | while read -r vbox_file; do vm_folder=$(dirname "$vbox_file") vm_name=$(basename "$vbox_file" .vbox) if ! is_registered_vm "$vm_name"; then echo "Nicht registrierte VM gefunden: $vm_name" echo "Lösche Ordner: $vm_folder" sudo rm -rf "$vm_folder" fi done done echo "Cleanup abgeschlossen."