persist-disk/persist.sh
2025-06-06 16:26:47 -03:00

71 lines
1.6 KiB
Bash

#!/bin/bash
# 1. Lista partições físicas disponíveis (excluindo loop e rom)
DISCOS=($(lsblk -lpno NAME,TYPE | grep part | awk '{print $1}' | grep -vE 'loop|sr|rom'))
# Verifica se encontrou discos
if [ ${#DISCOS[@]} -eq 0 ]; then
echo "Nenhuma partição encontrada."
exit 1
fi
# 2. Mostra menu para o usuário escolher
echo "Selecione uma partição para montar:"
for i in "${!DISCOS[@]}"; do
echo "$((i+1))) ${DISCOS[$i]}"
done
# 3. Recebe escolha
read -p "Digite o número da partição desejada: " escolha
# Valida escolha
if ! [[ "$escolha" =~ ^[0-9]+$ ]] || [ "$escolha" -lt 1 ] || [ "$escolha" -gt ${#DISCOS[@]} ]; then
echo "Opção inválida."
exit 1
fi
DEVICE=${DISCOS[$((escolha-1))]}
# 4. Obtém UUID
UUID=$(blkid -s UUID -o value "$DEVICE")
if [ -z "$UUID" ]; then
echo "UUID não encontrado para $DEVICE"
exit 1
fi
# 5. Detecta o tipo de sistema de arquivos
FSTYPE=$(blkid -s TYPE -o value "$DEVICE")
if [ -z "$FSTYPE" ]; then
echo "Tipo de sistema de arquivos não encontrado."
exit 1
fi
# 6. Solicita ponto de montagem
read -p "Informe o ponto de montagem (ex: /mnt/dados): " MOUNTPOINT
# Cria se não existir
if [ ! -d "$MOUNTPOINT" ]; then
echo "Criando diretório $MOUNTPOINT"
mkdir -p "$MOUNTPOINT"
fi
# 7. Linha que vai pro fstab
FSTAB_LINE="UUID=$UUID $MOUNTPOINT $FSTYPE defaults 0 2"
# Verifica se já existe
if grep -qs "$UUID" /etc/fstab; then
echo "UUID já está no fstab. Abortando."
exit 1
fi
# 8. Escreve no fstab
echo "Adicionando ao /etc/fstab:"
echo "$FSTAB_LINE"
echo "$FSTAB_LINE" | tee -a /etc/fstab
# 9. Monta
mount -a
# 10. Sucesso
echo "Montado $DEVICE em $MOUNTPOINT com UUID=$UUID"