mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-07-06 23:46:52 +00:00
Update storage-manager.sh
This commit is contained in:
parent
a8540f5fb2
commit
6c28c6116a
@ -3,55 +3,57 @@
|
|||||||
DUMP_DIR="/var/lib/vz/dump"
|
DUMP_DIR="/var/lib/vz/dump"
|
||||||
STORAGE_CFG="/etc/pve/storage.cfg"
|
STORAGE_CFG="/etc/pve/storage.cfg"
|
||||||
|
|
||||||
# Crear directorio de dump si no existe
|
# Función para comprobar y reparar después de la restauración
|
||||||
mkdir -p "$DUMP_DIR"
|
reparar_storage_cfg() {
|
||||||
|
whiptail --title "Comprobación de Almacenamientos" --msgbox "Comprobando consistencia de los volúmenes de almacenamiento..." 8 40
|
||||||
|
|
||||||
|
# Verificar grupos LVM
|
||||||
|
VG_LIST=$(vgs --noheadings -o vg_name)
|
||||||
|
while read -r LINE; do
|
||||||
|
if [[ "$LINE" =~ vgname ]]; then
|
||||||
|
VG_NAME=$(echo "$LINE" | awk '{print $NF}')
|
||||||
|
if ! echo "$VG_LIST" | grep -q "$VG_NAME"; then
|
||||||
|
echo "El volumen $VG_NAME no existe, eliminando entrada..."
|
||||||
|
sed -i "/vgname $VG_NAME/,/nodes/d" "$STORAGE_CFG"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done < "$STORAGE_CFG"
|
||||||
|
|
||||||
|
whiptail --title "Reparación Completada" --msgbox "La comprobación de consistencia ha finalizado. Se eliminaron las entradas no válidas." 8 40
|
||||||
|
}
|
||||||
|
|
||||||
|
# Restaurar copia de seguridad y comprobar
|
||||||
|
restaurar_backup() {
|
||||||
|
BACKUP_FILE=$(whiptail --title "Seleccionar Copia de Seguridad" --menu "Selecciona la copia de seguridad a restaurar:" 15 60 8 $(ls "$DUMP_DIR"/storage.cfg_*.bak) 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
if [ -z "$BACKUP_FILE" ]; then
|
||||||
|
whiptail --title "Error" --msgbox "No se seleccionó ninguna copia de seguridad." 8 40
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp "$BACKUP_FILE" "$STORAGE_CFG"
|
||||||
|
whiptail --title "Restauración Completada" --msgbox "Se ha restaurado el archivo storage.cfg desde la copia de seguridad: $BACKUP_FILE" 8 40
|
||||||
|
|
||||||
|
reparar_storage_cfg
|
||||||
|
}
|
||||||
|
|
||||||
# Menú principal
|
# Menú principal
|
||||||
OPTION=$(whiptail --title "Gestor de storage.cfg" --menu "Selecciona una opción:" 15 60 3 \
|
OPTION=$(whiptail --title "Gestor de Storage.cfg" --menu "Selecciona una opción:" 15 60 3 \
|
||||||
"1" "Reparar storage.cfg" \
|
"1" "Realizar copia de seguridad del archivo storage.cfg" \
|
||||||
"2" "Realizar copia de seguridad" \
|
"2" "Restaurar copia de seguridad y comprobar consistencia" \
|
||||||
"3" "Recuperar copia de seguridad" 3>&1 1>&2 2>&3)
|
"3" "Reparar archivo storage.cfg si se han cambiado discos" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
case $OPTION in
|
case $OPTION in
|
||||||
1)
|
1)
|
||||||
# Reparar storage.cfg
|
|
||||||
if [ -f "$STORAGE_CFG" ]; then
|
|
||||||
mv "$STORAGE_CFG" "${STORAGE_CFG}.bak"
|
|
||||||
fi
|
|
||||||
echo "# Archivo de configuración de almacenamiento reparado automáticamente" > "$STORAGE_CFG"
|
|
||||||
|
|
||||||
VG_LIST=$(vgs --noheadings -o vg_name)
|
|
||||||
if [ -n "$VG_LIST" ]; then
|
|
||||||
for VG in $VG_LIST; do
|
|
||||||
echo -e "lvm-thin: local-lvm\n\tthinpool data\n\tvgname $VG\n\tcontent rootdir,images\n" >> "$STORAGE_CFG"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
whiptail --title "Reparación completada" --msgbox "El archivo storage.cfg se ha reparado correctamente." 8 40
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
# Realizar copia de seguridad
|
|
||||||
BACKUP_FILE="${DUMP_DIR}/storage.cfg_$(date +%Y%m%d%H%M%S).bak"
|
BACKUP_FILE="${DUMP_DIR}/storage.cfg_$(date +%Y%m%d%H%M%S).bak"
|
||||||
cp "$STORAGE_CFG" "$BACKUP_FILE"
|
cp "$STORAGE_CFG" "$BACKUP_FILE"
|
||||||
whiptail --title "Copia de Seguridad" --msgbox "Se ha creado una copia de seguridad en: $BACKUP_FILE" 8 40
|
whiptail --title "Copia de Seguridad" --msgbox "Se ha creado una copia de seguridad en: $BACKUP_FILE" 8 40
|
||||||
;;
|
;;
|
||||||
|
2)
|
||||||
|
restaurar_backup
|
||||||
|
;;
|
||||||
3)
|
3)
|
||||||
# Recuperar copia de seguridad
|
reparar_storage_cfg
|
||||||
BACKUP_LIST=$(ls "$DUMP_DIR"/storage.cfg_*.bak 2>/dev/null)
|
|
||||||
if [ -z "$BACKUP_LIST" ]; then
|
|
||||||
whiptail --title "Error" --msgbox "No se encontraron copias de seguridad." 8 40
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
BACKUP_FILE=$(whiptail --title "Seleccionar Copia de Seguridad" --menu "Selecciona la copia de seguridad a recuperar:" 15 60 8 $(for file in $BACKUP_LIST; do echo "$file $(basename "$file")"; done) 3>&1 1>&2 2>&3)
|
|
||||||
|
|
||||||
if [ -z "$BACKUP_FILE" ]; then
|
|
||||||
whiptail --title "Error" --msgbox "No se seleccionó ninguna copia de seguridad." 8 40
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cp "$BACKUP_FILE" "$STORAGE_CFG"
|
|
||||||
whiptail --title "Recuperación completada" --msgbox "Se ha restaurado el archivo storage.cfg desde la copia de seguridad: $BACKUP_FILE" 8 40
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit 0
|
exit 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user