howtos/Linux/backup bbdd postgresql a di...

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 {} \;