35 lines
1.2 KiB
Plaintext
35 lines
1.2 KiB
Plaintext
|
|
Este script realiza el backup de bases de datos postgresql a un directorio determinado y mantiene las copias durante 30 dias.
|
|
|
|
|
|
El contenido del script es el siguiente
|
|
|
|
#!/bin/bash
|
|
|
|
Tarea de Backup Bases de datos POSTGRESQL.*
|
|
backup_dir="/var/data/backup/"
|
|
|
|
#Añadimos la fecha de backup al nuevo archivo
|
|
backup_fecha=`date +%d-%m-%Y_%H-:%M`
|
|
|
|
#Número de días que vamos a mantener nuestros backups
|
|
numero_dias="30"
|
|
|
|
#Creamos lista de bases de datos para realizar backup
|
|
bases_de_datos=`sudo -u postgres /usr/bin/psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
|
|
|
|
#Comenzamos tarea de backup
|
|
#El nombre del fichero de backup dera: nombre de la base de datos + fecha + estensión .gz
|
|
for i in $bases_de_datos; do
|
|
if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
|
|
echo Volcamos $i a $backup_dir$i_$backup_fecha
|
|
sudo -u postgres /usr/bin/pg_dump -Fc $i|gzip > $backup_dir$i_$backup_fecha.gz
|
|
sudo chown postgres:postgres $backup_dir$i_$backup_fecha.gz
|
|
sudo chmod 700 $backup_dir$i_$backup_fecha.gz
|
|
fi
|
|
done
|
|
|
|
#Realizamos tareas de limpieza
|
|
sudo find $backup_dir -type f -prune -mtime +$numero_dias -exec rm -f {} \;
|
|
|