Bases De Datos: script para backup de postgres
 #!/bin/bash
 ######## Bash script para hacer mantenimiento y backup de bases de datos especificas ########
 dbdump="/usr/bin/pg_dump";
 dbridx="/usr/bin/reindexdb";
 dbvacm="/usr/bin/vacuumdb";
 dbdump="/usr/bin/pg_dump";
 mkdirc="/bin/mkdir";
 dbserv="127.0.0.1";
 dbport="5432";
 export PGUSER="usuariodepostgre";
 export PGPASSWORD="contrasenha";
 dbcnxn="-h "$dbserv" -p "$dbport" -U "$PGUSER" ";    # Datos de conexion
 diahoy=`eval date "+%d"`;
 rtdirc="/var/lib/pgsql/8.4/backups";    # Directorio de backups
 dblist=( DB1 DB2 DBx );
 
 function f_date (){
   dirdat=`eval date +%Y%m%d`;
   dirdte=`eval date +%Y%m%d_%H%M%S`;
 }
 
 f_date;
 bkdir=$rtdirc"/bkp120-"$dirdat;            # Direccion absoluta directorio
 bkdiw="bkp120-"$dirdat;            
 if [ ! -d $bkdir ]; then
   echo "Creando directorio: "$bkdir" ";
    $mkdirc  -p $bkdir
 fi
 
 function f_loops () {
   dbsc=0;
   dbst=${#dblist[@]};
   while [ "$dbsc" -lt "$dbst" ]; do
     dbsp=${dblist[$dbsc]};
     dbspf=""$bkdir"/"$dbsp"";            # Prefijo (dir+nom+fecha) nombre de archivo
     dbspw=""$bkdiw"/"$dbsp"";            # Prefijo (dir+nom+fecha) nombre de archivo
     case $1 in
       "reindex" ) 
         f_date; 
         echo "$PGPASSWORD" | $dbridx" "$dbcnxn" -d "$dbsp" -e > "$dbspf"-"$dirdte"-reindexdb.log"
         ;;
       "vacuum" )
         f_date; 
         echo "$PGPASSWORD" | $dbvacm $dbcnxn -f -v -d $dbsp > $dbspf"-"$dirdte"-vacuumdb.log" 
         ;;
       "backup" )
         f_date; 
         echo "$PGPASSWORD" | $dbdump -i $dbcnxn -F c -b -v -f $dbspf"-"$dirdte".backup" $dbsp > $dbspf"-"$dirdte"-backup.log"
         ;;
     esac
     echo "###################################################";
     echo $exc;
     $exc;
     dbsc=`expr $dbsc + 1`;
   done
 
#     dbsp=${dblist[$dbsc]};
#     echo ""$dbsp;
#     echo ""
 }
 f_loops "backup";
 f_loops "reindex";
 f_loops "vacuum";
 echo "###################################################";
 echo "###################################################";
 echo "";
 
 /etc/init.d/postgresql-8.4 restart
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.