Descripción: Script en python que permite hacer un respaldo de una base de datos que reside en PostgreSql
Este archivo se ejecuta de la siguiente manera:
$ python respaldo.py
Para Restaurar la Base de Datos: -d Nombre Base Datos -U Usuario
pg_restore -d db -U postgres db.tar
#!/usr/bin/env python
import time
import datetime
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: 24_12_2011_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)
'''
t = datetime.datetime.now()
nombre = t.strftime('%d_%m_%Y_%I%M%S')
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:
ipservidor=10.121.6.4
nombrebasedatos=bdhcoromoto
usuariobasedatos=admhc
rutarespaldo=/media/respaldo
nombrearchivo=pg_bdhcoromoto_
'''
diccionario = {}
ruta = "/home/cgarcia/desarrollo/python/respaldo-potgres/config/config.cfg"
for linea in file(ruta):
if linea[0] != '#':
separar = linea.split('=')
if len(separar) > 1:
dicc_clave = separar[0]
dicc_valor = separar[1].rstrip() # rstrip elimina el retor d c
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 + \
nombre_archivo() + '.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 ***'
0 comentarios:
Publicar un comentario