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
gracias x compartirlo…me funcionó perfectamente pero a la hora de ponerlo en el cron me pide contraseña???
Hola
hice esto hace bastante y no lo tengo por la mano. Pero entiendo que no debería pedirte nada 🙂
ejectuta el cron con el usuario postgres que sale haciendo “la willy”