PostreSQL – script para backup

Un cliente me ha pedido un sistema simple de backup para PostgreSQL. Este script hace un backup de todas las bases de datos de tu instancia PostgreSQL y las deja comprimidas en gzip.

#!/bin/bash
# Location to place backups.
backup_dir="/var/backups/postgresql/"
#String to append to the name of the backup files
backup_date=`date +%d-%m-%Y`
#Numbers of days you want to keep copie of your databases
number_of_days=30
databases=`sudo -u postgres psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
for i in $databases; do
  if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
    echo Dumping $i to $backup_dir$i\_$backup_date
    sudo -u postgres pg_dump -Fc $i|gzip > $backup_dir$i\_$backup_date.gz
  fi
done
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \;

Notar que hemos añadido el “sudo -u postgres”. Ahora podemos añadir esto al crontab para ejecutarlo como nos convenga. Al final hay un rm -rf combinado con find para eliminar backups de más de N días de antigüedad.

Alehop!

Links
http://www.defitek.com/blog/2010/01/06/a-simple-yet-effective-postgresql-backup-script/comment-page-1/#comment-821

http://wiki.postgresql.org/wiki/Automated_Backup_on_Linux
http://www.postgresql.org/docs/8.1/static/backup.html

http://www.cyberciti.biz/tips/howto-backup-postgresql-databases.html

2 thoughts on “PostreSQL – script para backup

  1. gracias x compartirlo…me funcionó perfectamente pero a la hora de ponerlo en el cron me pide contraseña???

Leave a Reply

Your email address will not be published. Required fields are marked *