-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPostgres2.sh
133 lines (123 loc) · 4.52 KB
/
Postgres2.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# ! /bin/bash
# Programa que permite manejar las utilidades de Postres
# Autor: Marco Toscano Freire - @martosfre
opcion=0
fechaActual=`date +%Y%m%d`
# Función para instalar postgres
instalar_postgres () {
echo -e "\n Verificar instalación postgres ...."
verifyInstall=$(which psql)
if [ $? -eq 0 ]; then
echo -e "\n Postgres ya se encuentra instalado en el equipo"
else
echo -e "\n"
read -s -p "Ingresar contraseña de sudo:" password
read -s -p "Ingresar contraseña 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..."
}
# Función para desinstalar postgres
desinstalar_postgres () {
echo -e "\n"
read -s -p "Ingresar contraseña de sudo:" 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
read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
# Función para sacar un respaldo
sacar_respaldo () {
echo "Listar las bases de datos"
sudo -u postgres psql -c "\l"
read -p "Elegir la base de datos 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 ubicación:$1/bddRespaldo$fechaActual.bak"
else
echo "El directorio $1 no existe"
fi
read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
# Función para restaurar un respaldo
restaurar_respaldo () {
echo "Listar respaldos"
ls -1 $1/*.bak
read -p "Elegir el respaldo a restaurar:" respaldoRestaurar
echo -e "\n"
read -p "Ingrese el nombre de la base de datos 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
if [ -f "$1/$respaldoRestaurar" ]; then
echo "Restaurando respaldo..."
sudo -u postgres pg_restore -Fc -d $bddDestino "$1/$respaldoRestaurar"
echo "Listar la base de datos"
sudo -u postgres psql -c "\l"
else
echo "El respaldo $respaldoRestaurar no existe"
fi
read -n 1 -s -r -p "PRESIONE [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. Sacar un respaldo"
echo "4. Restar respaldo"
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
sleep 3
;;
2)
desinstalar_postgres
sleep 3
;;
3)
echo -e "\n"
read -p "Directorio Backup:" directorioBackup
sacar_respaldo $directorioBackup
sleep 3
;;
4)
echo -e "\n"
read -p "Directorio de Respaldos:" directorioRespaldos
restaurar_respaldo $directorioRespaldos
sleep 3
;;
5)
echo "Salir del Programa"
exit 0
;;
esac
done