como hacer un PG_DUMP desde un script, que me permita escoger que base de datos ignorar y cuales no

publicado por: Anonymous

Estoy desarrollando un Script en el Bash, para la automatización de la creación de los Backups para el motor Postgresql en Centos, pero necesito tener la posibilidad de ignorar las bases de datos que defina en una variable.
y guardar el Dump en la carpeta raiz.

Aqui les muestro un ejemplo de mi Script, el cual me genera el Dump pero no se como ignorar algunas bases de datos y como decirle que haga todas las que yo quiera.

Muchas gracias, seria genial su ayuda

#!/bin/bash
usuario="postgres"
password="123"
db="test1"
puerto=5432 
host="localhost"
DATE=`date +%Y-%m-%d`
/usr/bin/pg_dump --host $host --port $puerto --username $usuario --no-password  --format custom --blobs --verbose --file "/home/josealonso/Escritorio/backup2/B$db[$DATE].sql" "$db"
psql-l

Ajuntare el codigo que he logrado mejorar, durante el transcurso del dia:

#!/bin/bash
usuario='postgres'
password='123456a'
db=("test1" "test2")
puerto=5432 
host='localhost'
ignore=("test3")
for item in ${db[*]}
do
if [[ $item !=  $ignore ]];
then
DATE=`date +%Y-%m-%d
basedato=$item
/usr/bin/pg_dump --host $host --port $puerto --username $usuario --no-password  --format custom --blobs --verbose --file "/home/josealonso/Escritorio/backup2/B$item[$DATE].sql" "$basedato"
echo 'El Backup De La Base de Datos' $basedato 'Fue Realizado con exito!!!'
sh script.sh
fi
done

solución

Voy a proponerte una alternativa a lo que quieres. En mi opinión la solución más económica es hacer un archivo de respaldo (o backup) por cada base, ¿te interesa? Si quieres tener un solo archivo, al final del proceso se podría empaquetar. Usar un for en bash es relativamente trivial y podría solucionar tu problema.

#!/bin/bash
usuario="postgres"
password="123"
bases=(base1 base2)   # Esto es un arreglo con tus bases
puerto=5432 
host="localhost"
DATE=`date +%Y-%m-%d`
# Aqui inicia el ciclo que genera los respaldos
for db in "${bases[@]}"
do 
  echo "Creando el respaldo de ${db}"
  /usr/bin/pg_dump --host $host --port $puerto --username $usuario --no-password  --format custom --blobs --verbose --file "/home/josealonso/Escritorio/backup2/B${db}[$DATE].sql" "${db}"
done
# Esto crea un archivo compactado con tus respaldos
tar cjf respaldo[$DATE].tar.bz2 /home/josealonso/Escritorio/backup2/
psql-l

Usando un arreglo con los nombres de las bases que quieres respaldar, hacemos un ciclo “for` que genera un archivo por cada respaldo.

Al terminar, creamos un archivo compactado con el contenido del directorio. Pongo BZ2 por costumbre, pero puedes usar zip si así lo prefieres.

Nota

No he probado el script, pero espero que te sirva la idea.

Respondido por: Anonymous

Leave a Reply

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