Automatize pg_dump em um script bash

2

Estou reaprendendo o bash depois de anos sem usá-lo muito e preciso descobrir uma maneira de automatizar o pg_dump de um único banco de dados para um diretório.

Atualmente eu manualmente ssh na caixa, su para o usuário postgres e, em seguida, execute o banco de dados pg_dump > outfile.

Isso funciona bem, mas estou cansado de ter que fazer isso manualmente.

Estou muito enferrujado com o bash e gostaria de descobrir uma maneira de fazer o seguinte.

1.) Escreva um script que irá pg_dump meu banco de dados para um diretório específico 2.) O script deve exibir o nome do arquivo de saída como hostname-date (para permitir vários backups) 3.) Espero que forneça alguma forma de tratamento de erros.

Eu olhei para o wiki do Postgres e encontrei um script bastante elaborado que faz isso, mas queria saber se há algo rápido e sujo que faça o trabalho.

Quaisquer sugestões ou um ponto na direção correta seriam muito apreciados.

Obrigado rapazes e moças!

    
por nulltek 11.06.2015 / 15:58

2 respostas

3

Não levando em consideração qualquer sintaxe específica para pg_dump :

#!/bin/bash
$TODAY='date --iso-8601' 
$BACKDIR=/backup 

pg_dump [options] > $BACKDIR/$HOSTNAME-$TODAY

if [ "$?"-ne 0]; then echo "Help" | mail -s "Backup failed" [email protected]; exit 1; fi
    
por 11.06.2015 / 16:11
2

Veja o que eu criei é muito simples, mas funciona. Embora eu ache que a resposta de Sven faz um trabalho melhor com o tratamento básico de erros.

#!/bin/sh    
hostname='hostname'
# Dump DBs
  date='date +"%Y%m%d_%H%M%N"'
  filename="/var/backups/app/${hostname}_${db}_${date}.sql"
  pg_dump databasename >  $filename 
  gzip $filename

exit 0

Deixe-me saber o que você pensa!

    
por 11.06.2015 / 17:24