Implementa con confianza un flujo completo de backup y restore para Postgres en Bash. Aquí verás cómo validar directorios, gestionar permisos con sudo, generar archivos .back con fecha y restaurar en una base de datos destino usando pg_dump y pg_restore, tal como se construyó en el script 32.
¿Cómo automatizar backups en Postgres con Bash?
La lógica inicia listando bases de datos para elegir cuál respaldar. Se usa el primer argumento del script como directorio de destino, se valida su existencia y se aseguran permisos antes de ejecutar el respaldo. El archivo se guarda con nombre y fecha, por ejemplo: BDD_respaldo_2018-12-19.back.
Listar bases de datos con sudo -u postgres psql -c "\l".
Capturar la base a respaldar con read -p.
Validar el directorio argumento 1 con [ -d "$1" ].
Ajustar permisos con chmod 755 vía sudo.
Generar la fecha con date en formato año-mes-día.
Ejecutar pg_dump para crear el .back.
# Listar bases de datossudo -u postgres psql -c '\l'read -p "Elegir la base de datos a respaldar: " bdd_respaldo
# Directorio recibido como primer argumentodir_backup="$1"if[ -d "$dir_backup"];then# Permisos (requiere privilegios de sudo)sudochmod755"$dir_backup"echo -e "Realizando respaldo...\n"fechaActual=$(date +"%Y-%m-%d")archivo="$dir_backup/BDD_respaldo_${fechaActual}.back"# Respaldo con pg_dump en formato personalizadosudo -u postgres pg_dump -F c -f "$archivo""$bdd_respaldo"echo"Respaldo realizado correctamente en: $archivo"elseecho"El directorio que viene con el argumento número 1 no existe."fi
¿Qué variables y comandos son clave?
Argumento 1: directorio de backups, evita pedirlo de nuevo.
fechaActual: se arma con date y formato %Y-%m-%d.
Mensajes con echo -e: para saltos de línea y retroalimentación clara.
Permisos 755: garantizan ejecución y lectura del directorio.
¿Cómo validar, listar y elegir un respaldo para restaurar?
Para restaurar, primero se lista el contenido del directorio de backups, se elige el archivo .back y se solicita la base de datos destino. Si la BDD no existe, se crea. Luego se ejecuta pg_restore y se valida listando de nuevo las bases.
Ingresar directorio de backups y listar con ls -la.
Elegir el archivo .back a restaurar con read -p.
Solicitar BDD destino y verificar si existe con psql + grep.
Crear la BDD si no existe con CREATE DATABASE.
Validar el archivo con [ -f ] antes de restaurar.
Restaurar con pg_restore -F c -d y listar con \l.
read -p "Ingresar el directorio donde están los respaldos: " dir_backup
ls -la "$dir_backup"read -p "Elegir el respaldo a restaurar: " respaldo_restaurar
read -p "Ingrese el nombre de la base de datos destino: " bdd_destino
# Verificar si la BDD destino existea=$(sudo -u postgres psql -tA -c '\l'|cut -d '|' -f1 |grep -wq "$bdd_destino")ifsudo -u postgres psql -tA -c '\l'|cut -d '|' -f1 |grep -wq "$bdd_destino";thenecho"Restaurando en la BDD destino: $bdd_destino"elsesudo -u postgres psql -c "CREATE DATABASE $bdd_destino;"fi# Verificar archivo y restaurarif[ -f "$dir_backup/$respaldo_restaurar"];thenecho"Restaurando respaldo..."sudo -u postgres pg_restore -F c -d "$bdd_destino""$dir_backup/$respaldo_restaurar"sudo -u postgres psql -c '\l'elseecho"No existe el respaldo: $respaldo_restaurar"fi
¿Cómo se verifica correctamente el proceso?
Listando bases antes y después con psql -c "\l".
Confirmando mensajes de éxito: "Respaldo realizado correctamente" y "Restaurando respaldo...".
Observando el archivo .back con la fecha, por ejemplo: 2018-12-19.
¿Qué errores comunes resolver y cómo probar?
Durante la prueba se corrigieron detalles prácticos: falta de espacio en un comando, uso de un carácter incorrecto en lugar de pipe y necesidad de usar el path completo al validar el archivo del respaldo. También se ajustó la verificación de existencia de archivo con la ruta completa del argumento 1.
Usar el path completo del respaldo al verificar con [ -f ].
Reemplazar el carácter incorrecto por | para el pipe.
Cuidar espacios en comandos, especialmente en psql y banderas.
Probar el flujo: opción 3 para sacar respaldo y opción 4 para restaurar.
Ejemplo funcional: BDD_respaldo_2018-12-19.back restaurado en una BDD destino llamada "prueba".
Si quieres, comparte en comentarios tu versión del script 32, dudas puntuales o cómo resolviste los retos planteados para retroalimentarnos entre todos.
Hola. He modificado un poco el codigo original del profesos haciendo los siguientes cambios:
Al momento de crear un respaldo si el directorio de Respaldo ingresado por el
usuario no se encuentra se pregunta al Usuario si desea crear un directorio con
el nombre inicial ingresado.
En el modulo de Restaurar, cambie el orden de los condicionales ya que este
orden no era el mas optimo. Si el usuario ingresa un Respaldo a Restaurar que no
se encuentra el programa igual crea la BD en Postgres inclusive si no utiliza el
respaldo que por supuesto NO fue encontrado lo cual no deberia suceder.
Tambien agregue lineas de codigo para verificar si el directorio donde estan
los .bak que es ingresado por el usuario existe. De ser asi entonces se listan
los archivos .bak que alli se encuentran y de ese modo podemos escoger el .bak
que deseamos restaurar.
Por ultimo agregue al menu la opcion de listar BD en postgres para asi
facilmente poder consultar sin tener que ir al terminal.
# !/bin/bash
# Programa para ejemplificar el uso del Break y Continue#ArnoldoAlvarezopcion=0fechaActual=`date +%Y%m%d`#Esta es la funcion instalar PostGresinstalar_postgres(){ echo -e "\nVerificar si tenemos instalado PostGress..." sleep 3 verifyInstall=$(which psql)if[ $?-eq 0]; then
echo "PostGres ya se encuentra instalado en el equipo "else read -s -p "Introduzca password de administrador " password
read -s -p "Introduzca password a utilizar en PostGres " passwordPostgres
echo "$password"| sudo -S apt update
echo "$password"| sudo -S apt-get -y install postgresql postgresql-contrib
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$passwordPostgres}';" echo "$password"| sudo -S systemctl enable postgresql.service echo "$password"| sudo -S systemctl start postgresql.service fi
read -n 1-s -r -p "Presione [ENTER] para continuar..."}#Esta es la funcion desinstalar PostGresdesinstalar_postgres(){ echo -e "\nVerificando si ya esta Desinstalado Postgres..." verifyInstall=$(which psql)if[ $?-eq 1]; then
echo " PostGres NO se encuentra instalado en el Equipo "else read -s -p "Introduzca password de administrador " password
echo -e "\n" echo "$password"| sudo -S systemctl stop postgresql.service echo "$password"| sudo -S apt-get -y --purge remove postgresql\* echo "$password"| sudo -S rm -r /etc/postgresql
echo "$password"| sudo -S rm -r /etc/postgresql-common
echo "$password"| sudo -S rm -r /var/lib/postgresql
echo "$password"| sudo -S userdel -r postgres
echo "$password"| sudo -S groupdel postgresql
fi
read -n 1-s -r -p "Presione [ENTER] para continuar..."}#Esta es la funcion SacarRespaldosacar_respaldo(){echo "Listar las bases de datos..."sudo -u postgres psql -c "\l"read -p "Elegir la BD a respaldar: " bddRespaldo
echo -e "\n"if[-d "$1"]; then
echo "Establecer permisos directorio" echo "$password"| sudo -S chmod 755 $1
echo "Realizando respaldo..." sudo -u postgres pg_dump -Fc $bddRespaldo >"$1/bddRespaldo$fechaActual.bak" echo "Respaldo realizado Correctamente en la ubicacion: $1/bddRespaldo$fechaActual.bak"else echo -e "\nEl directorio $1 No Existe" echo -e "\n" read -n1 -p "Desea crear el directorio $1 (s/n)" respbdd
if[ $respbdd ="s"]; then
sudo mkdir $1
echo "$password"| sudo -S chmod 755 $1
echo -e "\nRealizando respaldo..." sleep 3 sudo -u postgres pg_dump -Fc $bddRespaldo >"$1/bddRespaldo$fechaActual.bak" echo "Respaldo realizado Correctamente en la ubicacion: $1/bddRespaldo$fechaActual.bak"else echo -e "\nSaliendo sin realizar Respaldo..." sleep 3 fi
fi
read -n 1-s -r -p "Presione [ENTER] para continuar..."}#Esta es la funcion RestaurarRespaldorestaurar_respaldo(){read -p "Ingresar el directorio donde se encuentran los respaldos " directorioBackup
if[-d $directorioBackup ]; then
echo "Listando los archivos de Respaldos..."sleep 3ls -la $directorioBackup
read -p "Ingresar el archivo .bak a restaurar: " respaldoRestaurar
#echo -e "\n"if[-f "$directorioBackup/$respaldoRestaurar"]; then
read -p "Ingresar nombre BD destino: " bdDestino
verifyBdd=$(sudo -u postgres psql -lqt | cut -d \|-f 1| grep -wq $bdDestino)if[ $?-eq 0]; then
echo "Restaurando en la Base de Datos destino...$bdDestino" sudo -u postgres pg_restore -Fc-d $bdDestino "$directorioBackup/$respaldoRestaurar" echo "Listar Bases de datos..." sudo -u postgres psql -c "\l"else echo "La BD destino no se encuentra..." echo "Creando Base de Datos destino..." sleep 4 sudo -u postgres psql -c "CREATE DATABASE $bdDestino" sudo -u postgres pg_restore -Fc-d $bdDestino "$directorioBackup/$respaldoRestaurar" echo "Listar Bases de datos..." sudo -u postgres psql -c "\l" fi
else echo "No se encuentra el archivo de Respaldo Ingresado" echo "Verifique nuevamente el nombre y vuelva a intentarlo..."fi
else echo "No se encuentra el directorio de Respaldos ingresado..." echo "Verifique nuevamente el nombre y vuelva a intentarlo..."fi
read -n 1-s -r -p "Presione [ENTER] para continuar..."}lista_de_BD(){echo -e "\Las Bases de Datos Actuales: "sudo -u postgres psql -c "\l"read -n 1-s -r -p "Presione [ENTER] para continuar..."}while:do #Limpiar la pantalla
clear
#Desplegar el menu de opciones
echo "----------------------------------------" echo "PGUTIL - Programa de Utilidades PostGres" echo "----------------------------------------" echo " MENU PRINCIPAL " echo "----------------------------------------" echo "1.Instalar Postgres " echo "2.Desinstalar Postgres " echo "3.Hacer un respaldo " echo "4.Restaurar respaldo " echo "5.Listar Bases de Datos Actuales " echo "6.Salir " #Leer los datos del Usuario-CapturarOpcion read -n1 -p "Ingrese una opcion [1-5]: " opcion
#Validar la opcion ingresada
case $opcion in1) instalar_postgres
#sleep 3;;2) desinstalar_postgres
#sleep 3;;3) echo -e "\n" read -p "Indique Directorio: " directorioBackup
sacar_respaldo $directorioBackup
;;4) echo -e "\n" #read -p "Indique Directorio de Respaldos " directorioRespaldos
restaurar_respaldo $directorioRespaldos
;;5) lista_de_BD
;;6) echo -e "\nSaliendo del programa...." exit 0;; esac
done
Lo que mas se agradece es que ya no volveré a escuchar "EL TEMA DE" por un largo tiempo, curso terminado. Como punto adicional y cosa que sinceramente no se si ocurre en platzi, los videos deberían ser revisados con mas rigor ya que el profesor se equivoca algunas ocasiones, sumado a la muletilla que se hace estresante y por ultimo el no explicar bien los comandos, tuve que recurrir a buscar, leer comentarios mirar otros tutoriales para algo que le tomaba al profesor 20 segundos.
Has descubierto ser autodidacta. No se sinceramente en que afecta que el profesor diga tema o no. De verdad me parece de mal gusto la burla generalizada cuando venimos es aprender. Si miras un poco mas allá te darás cuenta lo importante y valioso de este curso y el grado de dominio que tiene el docente.
Cuando la complejidad del script va en aumento, les recomiendo utilizar sus variables de la siguiente forma ${nombre_variable}, ya que así sabemos visualmente cuál es el nombre de la variable.
El truco está en aprovechar la información que genera el código de salida del pipe para validar un proceso combinado con la sentencia if ya que este código es igual a 0 si el ultimo pipe ejecutado fue exitoso de la contrario este código será igual a 1, si quieres saber información sobre otras utilizar este "código" indaga más sobre el tema.
Y al parecer no hay diferencia como tal, se llaman command substitution y además de permitirnos asignar valores a variables, también nos permite hacer anidado de comandos
# !/bin/bash
# Programa que permite manejar las utilidades de Postgresopcion=0fechaActual=`date +%Y%m%d`#Funciòn para instalar Postgresinstalar_Postgres(){ clear
echo "Verificando instalación de Postgres..." verifyInstall=$(which psql)if[ $?-eq 0]; then
echo -e "\nPostgres ya se encuentra instalado en el equipo"else #Cuando se piden datos con read y se quiere usal salto de linea se usa $ y comillas simples
read -s -p $'\nIngresar contraseña de sudo: ' pwdSudo
read -s -p $'\nIngresar contraseña a ultilizar en Postgres: ' pwdPsql
#Ejecutar comandos
echo "$pwdSudo"| sudo -S apt update
echo "$pwdSudo"| sudo -S apt-get -y install postgresql postgresql-contrib
#Cambio de clave del usuario en Postgres sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$pwdPsql}';" #Habilitar e iniciar servicio Postgres echo "$pwdSudo"| sudo -S systemctl enable postgresql.service echo "$pwdSudo"| sudo -S systemctl star postgresql.service fi
#Solicitar que presionen una tecla para continuar
read -n1 -s -r -p $'\nPresione [ENTER] para continuar'}#Función para DesinstalarPostgresdesinstalar_Postgres(){ clear
echo "Iniciando proceso para Desinstalar Postgres..." read -s -p $'\nIngresar contraseña de sudo: ' pwdSudo
echo -e "\n" echo "$pwdSudo"| sudo -S systemctl stop postgresql.service #Puede requerir este comando pero debe saber que versión tiene instalado
#echo "$pwdSudo"| sudo -S pg_dropcluster --stop 14 main
echo "$pwdSudo"| sudo -S apt-get -y --purge remove postgresql\* echo "$pwdSudo"| sudo -S rm -r /etc/postgresql
echo "$pwdSudo"| sudo -S rm -r /etc/postgresql-common
echo "$pwdSudo"| sudo -S rm -r /var/lib/postgresql
echo "$pwdSudo"| sudo -S userdel -r postgres
echo "$pwdSudo"| sudo -S groupdel postgresql
read -n1 -s -r -p $'\nPresione [ENTER] para continuar'}#Función para hacer Backupssacar_Backup(){ clear
echo "Listar las BDD" sudo -u postgres psql -c "\l" read -p $'\nElegir la base de datos a respaldar: ' bddBackup
echo -e "\n"if[-d "$1"]; then
echo "Establecer permisos al directorio" echo "$pwdSudo"| sudo -S chmod 755 $1
echo -e "\nRealizando Backup..." sudo -u postgres pg_dump -Fc $bddBackup >"$1/bddBackup$fechaActual.bak" echo -e "\nBackup realizado Correctamente!"else echo "El directorio $1 no existe..." echo -e "\n" read -n1 -p "Desea crear el directorio $1? (s/n)" respuestaDir
if[ respuestaDir ="s"]; then
sudo mkdir $1
echo "$pwdSudo"| sudo -S chmod 755 $1
echo -e "\nRealizando Backup..." sudo -u postgres pg_dump -Fc $bddBackup >"$1/bddBackup$fechaActual.bak" echo -e "\nBackup realizado Correctamente!"else echo -e "\nSaliendo sin realizar Backup..." fi
fi
read -n1 -s -r -p $'\nPresione [ENTER] para continuar'}#Función para RestaurarBackupsrestaurar_Backup(){ echo "Listar Backups" ls -1 $1/*.bak
read -p "Elegir el Backup a Restaurar: " backupRestore
read -p $'\nIngrese el nombre de la BDD destino: ' bddDestino
#Verificar si la BDD existe!
verifyBdd=$(sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -wq $bddDestino)
if [ $? -eq 0 ]; then
echo "Restaurando en la BDD destino: $bddDestino"
else
sudo -u postgres psql -c "create database $bddDestino"
fi
#Verificar si el respaldo que se va restaurar existe
if [ -f "$1/$backupRestore" ]; then
echo "Restaurando Backup..."
sudo -u postgres pg_restore -Fc -d $bddDestino "$1/$backupRestore"
echo -e "\nListar la BDD"
sudo -u postgres psql -c "\l"
else
echo -e "\nEl Backup $backupRestore no existe!"
fi
read -n1 -s -r -p $'\nPresione [ENTER] para continuar'
}
while :
do
#Limpiar la pantalla
clear
#Desplegar el menú de opciones
echo "_________________________________________"
echo "PGUTIL - Programa de Utilidad de Postgres"
echo "_________________________________________"
echo " MENÚ PRINCIPAL "
echo "_________________________________________"
echo "1. Instalar Postgres"
echo "2. Desinstalar Postgres"
echo "3. Hacer un Backup"
echo "4. Restaurar un Backup"
echo "5. Salir"
#Leer los datos del usuario - capturar información
read -n1 -p "Ingrese una opción [1-5]: " opcion
#Validar la opción ingresada
case $opcion in
1)
instalar_Postgres
;;
2)
desinstalar_Postgres
;;
3)
clear
read -p "Indique el Directorio de Backups: " directorioBackup
sacar_Backup $directorioBackup
;;
4)
clear
read -p "Ingrese el Directorio donde se encuentran los Backups: " directorioRestaurar
restaurar_Backup $directorioRestaurar
;;
5)
echo -e "\n\nSalir del Programa..."
exit 0
;;
esac
done
Crear funciones en Bash para **sacar** y **restaurar respaldos** de una base de datos PostgreSQL es muy útil para automatizar tareas de mantenimiento. Aquí te muestro cómo definir dos funciones: una para hacer respaldos y otra para restaurarlos.
### Requisitos:
- Asegúrate de tener instalado el cliente de PostgreSQL (psql y pg\_dump).
- La base de datos debe ser accesible (credenciales y permisos correctos).
### 1. **Función para hacer respaldos:**
Para hacer un respaldo de una base de datos en PostgreSQL, puedes usar el comando pg\_dump. Aquí te dejo una función en Bash que permite realizar un respaldo:
hacer\_respaldo(){  local DB\_NAME=$1  local BACKUP\_DIR=$2  local DATE=$(date +'%Y%m%d\_%H%M%S')  local BACKUP\_FILE="$BACKUP\_DIR/$DB\_NAME-$DATE.sql"  if \[ -z "$DB\_NAME" ] || \[ -z "$BACKUP\_DIR" ]; then  echo "Uso: hacer\_respaldo nombre\_base\_datos directorio\_respaldo"  return 1  fi  echo "Realizando respaldo de la base de datos '$DB\_NAME' en '$BACKUP\_FILE'..."     pg\_dump -U postgres -F c -b -v -f "$BACKUP\_FILE" "$DB\_NAME"  if \[ $? -eq 0 ]; then  echo "Respaldo completado: $BACKUP\_FILE"  else  echo "Error al realizar el respaldo."  return 1  fi}\# Ejemplo de uso:
\# hacer\_respaldo "mi\_base\_de\_datos""/ruta/donde/guardar/respaldo"
- -v: Modo verboso (para ver más detalles del progreso).
- -f archivo: Archivo de salida donde se guardará el respaldo.
### 2. **Función para restaurar un respaldo:**
Para restaurar una base de datos desde un archivo de respaldo, puedes usar el comando pg\_restore. Aquí te muestro una función para restaurar el respaldo:
restaurar\_respaldo(){  local DB\_NAME=$1  local BACKUP\_FILE=$2  if \[ -z "$DB\_NAME" ] || \[ -z "$BACKUP\_FILE" ]; then  echo "Uso: restaurar\_respaldo nombre\_base\_datos archivo\_respaldo"  return 1  fi  echo "Restaurando base de datos '$DB\_NAME' desde '$BACKUP\_FILE'..."  \# Si la base de datos ya existe, se debe eliminar y crear nuevamente  psql -U postgres -c "DROP DATABASE IF EXISTS $DB\_NAME;"  psql -U postgres -c "CREATE DATABASE $DB\_NAME;"  \# Restaurar el respaldo  pg\_restore -U postgres -d "$DB\_NAME" -v "$BACKUP\_FILE"  if \[ $? -eq 0 ]; then  echo "Restauración completada."  else  echo "Error al restaurar la base de datos."  return 1  fi}\# Ejemplo de uso:
\# restaurar\_respaldo "mi\_base\_de\_datos""/ruta/al/archivo\_respaldo.sql"
#### Descripción:
- psql -U postgres -c "DROP DATABASE IF EXISTS nombre\_base;": Elimina la base de datos si existe.
- psql -U postgres -c "CREATE DATABASE nombre\_base;": Crea una nueva base de datos.
- pg\_restore -U postgres -d nombre\_base archivo\_respaldo: Restaura la base de datos desde el archivo de respaldo.
### 3. **Ejemplo de uso conjunto:**
Supón que tienes una base de datos llamada mi\_base\_de\_datos y deseas hacer un respaldo y luego restaurarlo.
- **Autenticación**: Si estás ejecutando estos comandos desde un script, puedes configurar las variables de entorno para evitar que te pida la contraseña cada vez. Usa un archivo .pgpass o variables como PGPASSWORD:
```bash
export PGPASSWORD="mi_contraseña"
```
- **Usuarios y permisos**: Asegúrate de que el usuario tenga los permisos necesarios para crear y eliminar bases de datos.
Estas funciones automatizan el proceso de respaldo y restauración de bases de datos en PostgreSQL mediante Bash.
#!/bin/bash# Este script muestra uso de funciones
# Autor:JulianLamadrid, jlamadrid, litocruz
# Variablesopcion=0fechaActual=`date +%Y%m%d`
# funciones
instalar_postgres(){ echo "Verificar Instalacion postgres.." verifypostgres=$(wich psql)# if[ which psql 1>22>/dev/null]; then
if[ $?-eq 0]; then
echo -e "Psgress ya se encuentra instalado"else read -s -p "Ingresar contraseña ROOT: "password
read -s -p "Ingresar contraseña postgres: "passwordpostgres
echo "$password"| sudo -S apt update
echo "$password"| sudo -S apt install postgresql postgresql-contrib
sudo -u postgres psql -C"ALTER USER postgres WITH PASSWORD '{$passwordpostgres}';" echo "$password"| sudo -S systemctl enable postgresql.service echo "$password"| sudo -S systemctl start postgresql.service fi
read -n 1-s -r -p "PRESIONE [ENTER] para continuar..."}desinstalar_postgres(){ echo "Desinstalando postgres.." read -s -p "Ingresar contraseña ROOT: "password
echo "$password"| sudo -S systemctl stop postgresql.service echo "$password"| sudo -S apt -y remove --purge postgresql\* echo "$password"| sudo -S rm -r /etc/postgresql
echo "$password"| sudo -S rm -r /etc/postgresql-common
echo "$password"| sudo -S rm -r /var/lib/postgresql
echo "$password"| sudo -S userdel -r postgres
echo "$password"| sudo -S groupdel postgresql
read -n 1-s -r -p "PRESIONE [ENTER] para continuar..."}sacar_respaldo(){ echo "Listar bases de datos postgres" sudo -u postgres psql -c "\l" read -p "Elegir la base de datos a respaldar"DBdump echo -e "\n"if[-d "$1"]; then
echo "Establecer permisos de directorio" read -p -s "Ingresar contraseña ROOT: "password
echo "$password"| sudo -S chmod 755 $1
echo "sacando respaldo.." sudo -u postgres pg_dump -Fc $DBdump >"$1/$DBdump$fechaActual.bak" echo "Respaldo realizado en $1/$DBdump$fechaActual.bak"else read -p -n 1"El directorio $1 no existe, desea crearlo s/n?" crerdirectorio
if[ $crerdirectorio ="s"]; then
mkdir $1
[ $?-eq 0]&& echo "Directorio creado con exito. Vuelva a ingresar para realizar respaldo"|| echo "error %?" fi
fi
read -n 1-s -r -p "PRESIONE [ENTER] para continuar..."}restaurar_respaldo(){ echo "Listar respaldos" ls -la $1
read -p "Elegir el respaldo a restaurar: " respaldoRestaurar
echo -e "\n" echo "Listar bases de datos postgres" sudo -u postgres psql -c "\l" read -p "Elegir la base de datos a respaldar"DBdump echo -e "\n" echo "restaurando respaldo.." sudo -u postgres pg_restore -Fc-d $DBdump "$1/$respaldoRpestaurar" read -n 1-s -r -p "PRESIONE [ENTER] para continuar..."}while:do #Limpiar pantalla
clear
#Desplegar menu opciones
echo "-----------------------------------------" echo "PGUTIL - Programa de utilidad de Postgres" echo "-----------------------------------------" echo " MENU PRINCIPAL " echo "1. Instalar Postgres" echo "2. Desinstalar Postgres" echo "3. Sacar un Respaldo" echo "4. Restaurar un Respaldo" echo "5. Exit" # Leer los datos del usuario - capturar info
read -n1 -p "Ingrese opcion del [1-5]: " opcion
echo -e "\n" #Validar opcion ingresada
case $opcion in1) instalar_postgres
;;2) desinstalar_postgres
;;3) read -p "Directorio Backup: " directoriobackup
sacar_respaldo $directoriobackup
;;4) read -p "Directorio Respaldo: " directoriorespaldo
restaurar_respaldo $directoriorespaldo
;;5) echo -e "\nSaliendo..." exit 0;; esac
done