29 de agosto de 2007

Respaldar Automaticamente toda las base de datos en Postgres...

* Creamos un archivo que va a contener las instrucciones de nuestro scripts:

#!/bin/bash

## BEGIN CONFIG ##
HOST=localhost
FECHA=$(date +%d-%m-%Y)
BACKUP_DIR=/media/backup/postgres/$FECHA
export PGPASSWORD=postgres
## END CONFIG ##

if [ ! -d $BACKUP_DIR ]; then
mkdir -p $BACKUP_DIR
fi

POSTGRE_DBS=$(psql -h $HOST -U postgres -l | awk ' (NR > 2) &&
(/[a-zA-Z0-9]+[ ]+[|]/) && ( $0 !~ /template[0-9]/) { print $1 }');

for DB in $POSTGRE_DBS ; do
echo "* Respaldando las Base de datos en PostgreSQL data de $DB@$HOST..."
# pg_dump -h $HOST -U postgres $DB > $BACKUP_DIR/pg_$DB.sql
# pg_dump -h $HOST -U postgres $DB | bzip2 > /media/backup/postgres/$FECHA"_"$DB.bz2
pg_dump -h $HOST -U postgres $DB | bzip2 > $BACKUP_DIR/$DB.bz2 && echo "OK"

echo -n "Verificando archivo comprimido "$DB".bz2... "
bunzip2 -t $BACKUP_DIR/$DB.bz2 && echo "OK"

done

* Ejecución
:

$ sh archivo


* Explicación:
Automaticamente crea un directorio con la fecha del respaldo con todas las base de datos comprimida.

3 comentarios:

Anónimo dijo...

como hacer esto en windows, ya que no se como extraer la fecha en un .bat para colocarlo en el administrador de tareas de un servidor windows

jjmoncar dijo...

saludos, muy bueno tu comentario, pero me podrias indicar donde coloco el script?

schum@-ve dijo...

Hola, colócalo en donde tu quiera, y luego utiliza el crontab y le dice que a tal hora y tales días va a ejecutar dicho archivo.

Yo lo tengo dentro de mi servidor en la carpeta de home/miusuario

Cabe destacar que dicho archivo debe ser ejecutable, le cambia la propiedad de ejecución y listo..

Cualquier cosa, no dudes en escribirme.


Firefox