Scripts en Python para respaldar base de datos en postgrtesql desde Linux

python Antes que todo quiero aclarar que no tengo ningún tipo de experiencia programando con Python,  pero tampoco les voy a negar lo mucho que me gusta este lenguaje de programación  tanto asi que me anime a realizar este pequeño scripts dada mi necesidad de realizar un respaldo mensual de una base de datos que reside en PostGreSql en un servidor con Linux Debian, probablemente tenga muchas criticas de este scripts, pido disculpas a los gurus python #LOL  pero en algún momento tenia que empezar a programar y creo que esta es la mejor manera ya que es solo un breve código que no le hace daño a nadie y particularmente a mi me servio 😛 .

Aqui el codigo en gitorious :https://gitorious.org/respaldo-potgres/respaldo-potgres/blobs/master/src/respaldo_postgres.py

Codigo Python: respaldo_postgresql.py

”’

@author: FOXCARLOS

scripts en python que permite hacer un respaldo de una base de datos que reside en PostgreSql utilizando un comando que viene incluido en el cliente

postgres conocido como “pg_dump” , a este comando se le pasan varios parametros los cuales son los que nosotros vamos a manejar y administrar con

python mediante este script, es necesario que tengan instalado PostGreSQl en el PC donde deseen correr este scripts

Este archivo se ejecuta de la siguiente manera:

$ python respaldo_postgresql.py

”’

import time
import os

def nombre_archivo():

”’
Permite Crear el nombre del archivo que tendra el respaldo
tomando como nombre la fecha dd-mm-aa y la hora hh:mm:ss
Quedando de la siguiente manera suponiendo que fue realizado
en la siguiente fecha (24/12/2011 10:30:00) , el resultado seria
el siguiente: 24122011-103000
 ”’

t =time.localtime()
dia = t.tm_mday
mes = t.tm_mon
ano = t.tm_year

hora = t.tm_hour
minutos = t.tm_min
seg = t.tm_sec

nombre = ‘%s%s%s-%s%s%s’ % (dia,mes,ano,hora,minutos,seg)
return nombre

def  leer_config():

”’
Toma los valores del archivo de configuracion llamado config.cfg y los guarda en
un diccionario {clave:valor} el cual retorna al finalizar.

Informacion del archivo config.cfg:

#Con un Numeral se comenta una linea dentro del archivo config.cfg

ipservidor=10.121.6.4
nombrebasedatos=bdhcoromoto
usuariobasedatos=admhc
rutarespaldo=/media/respaldo
nombrearchivo=pg_bdhcoromoto_
”’
diccionario={}
for linea in file(“/home/foxcarlos/Dropbox/Sistemas/practicas_python/src/config.cfg”):

if linea[0] != ‘#’:

separar = linea.split(‘=’)
if len(separar) > 1:

dicc_clave = separar[0]
dicc_valor = separar[1].rstrip() #rstrip elimina el retorno de carro
diccionario[dicc_clave]=dicc_valor

return diccionario

def respaldo_pg():

”’
Toma los parametros del diccionario con el cual se arma el nombre y
la ruta que tendra el archivo del respaldo asi como tambien arma
el comando final a ejecutar
”’

diccio = leer_config()
dic_ipservidor = diccio[‘ipservidor’]
dic_nombrebasedatos = diccio[‘nombrebasedatos’]
dic_usuariobasedatos = diccio[‘usuariobasedatos’]
dic_rutarespaldo = diccio[‘rutarespaldo’]
dic_nombrearchivo = diccio[‘nombrearchivo’]

archivofinal = os.path.join(dic_rutarespaldo,dic_nombrearchivo+‘.tar’)
comando = ‘pg_dump’

”’
– Parametros a pasar(Estos tambien se pudieran colocar dentro del archivo config.cfg),
– pero por ahora lo dejaremos asi directo como texto
-Ft Significa Format tar
-b Inclute campos Blobs
-h es el host o la ip del servidor
-W password
”’
comando_a_ejecutar=‘%s -Ft -b -h %s %s -U %s > %s’ % \
(comando,dic_ipservidor,dic_nombrebasedatos,dic_usuariobasedatos,archivofinal)
return comando_a_ejecutar

if __name__ == ‘__main__’:

print ‘Espere un momento ejecutando Proceso de Respaldo…’
respaldar = respaldo_pg()
print respaldar
os.system(respaldar)
print ‘*** Respaldo Realizado con Exito ***’

Anuncios

~ por foxcarlos en diciembre 17, 2011.

3 comentarios to “Scripts en Python para respaldar base de datos en postgrtesql desde Linux”

  1. Aclaratoria: Esto fue probado en un PC con Linux Debian

  2. Como indicaba al principio del Post no tengo experiencia en python asi que voy a acortar una parte del codigo ya que consegui una forma mas corta de hacerlo.

    t =time.localtime()
    dia = t.tm_mday
    mes = t.tm_mon
    ano = t.tm_year

    hora = t.tm_hour
    minutos = t.tm_min
    seg = t.tm_sec

    nombre = ‘%s%s%s-%s%s%s’ % (dia,mes,ano,hora,minutos,seg)

    ######################################################
    # Esto anterior se hace de manera mas sencilla:
    import datetime

    import datetime
    t=datetime.datetime.now()

    nombre = t.strftime( “%d%m%Y-%I%M%S”)

  3. […] https://foxcarlos.wordpress.com/2011/12/17/scripts-en-python-para-respaldar-base-de-datos-en-postgrte… […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: