quarta-feira, 29 de dezembro de 2010

Shell Script de backup para PostgreSQL

Esse script pode ser usado p/ fazer backups diários de todas as bases postgres
exemplo no crontab diariamente as 23:50
50 23 * * * /scripts/backup_pgsql.sh

#!/bin/sh
# Script to backup postgres databases 
# Create a complete bkp with all databses and a separated for each one
# Author: Mario Cezzare mcezzare@gmail.com 
# last update on Wed Dec 29 16:24:11 on ttys005   
PGDUMPALL="$(which pg_dumpall)"
PSQL="$(which psql)"
GZIP="$(which gzip)"


x=`date '+BACKUP-%d.%m.%y'`
separator="-----------------------------------"
path_backup=/backup/pgsql/
notify="sysadmin@email.com.br"
cd $path_backup
mkdir $x
path_backup="$path_backup/$x"
echo $x
now=`date '+%d.%m.%y %H:%M:%S'`
##################################################################################
# PART 1 - LOGS 
##################################################################################
echo " starting at $x $now"  >> $path_backup/pgsql-databases-$x.log


##################################################################################
# PART 2 - ALL DATAL 
##################################################################################
$PGDUMPALL -U postgres |  $GZIP -c  > $path_backup/$x-all-pg.pgsql.gz


##################################################################################
# PART 3 - EACH ONE
##################################################################################
DIR=$path_backup
[ ! $DIR ] && mkdir -p $DIR || :
LIST=$($PSQL -U postgres -l | awk '{ print $1}' | grep -vE '^-|^List|^\(|^Name|template[0|1]')
for d in $LIST
do
  echo "Dumping $d" 
  pg_dump -U postgres $d | $GZIP -c >  $DIR/$d.pgsql.gz
  now=`date '+%d.%m.%y %H:%M:%S'`
  echo "$d em $now"  >> $path_backup/pgsql-databases-$x.log
done
##################################################################################
# PART 1B - END LOGS 
##################################################################################
echo " ending at $x $now"  >> $path_backup/pgsql-databases-$x.log


##################################################################################
# PART 4 - NOTIFICATIONS 
##################################################################################


ls -aloh $path_backup | mail -s BACKUP_POSTGRES_DATABASES $notify

Nenhum comentário: