lunes, 25 de febrero de 2013

LAUNCHPAD


Definición:
Launchpad es un sitio web de encuentro y colaboración al más alto nivel de especialistas en el desarrollo de distribuciones y aplicaciones, en particular de software libre. No hay una separación clara entre novatos y expertos, por lo que unos pueden aprender de los otros y viceversa.
En este sitio web los colaboradores de todo el mundo suben sus desarrollos y nuevos módulos. Para acceder al sitio puede diridirse a Launchpad.
Launchpad utiliza el servidor de aplicaciones web gratuito y de codigo abierto Zope.

Componentes:
  • Code: un sitio de alojamiento de código fuente que utiliza el sistema de control de versiones Bazaar.
  • Bugs: un sistema de seguimiento de errores para informar sobre bugs en diferentes distribuciones y productos.
  • Blueprints: un sistema de seguimiento para especificaciones y nuevas funcionalidades.
  • Translations: un sitio para traducir aplicaciones a múltiples idiomas.
  • Answers: un sitio de ayuda para la comunidad.
  • Soyuz: una herramienta para llevar una pequeña parte del mantenimiento de las distribuciones. Abarca el sistema de construcción, el mantenimiento de paquetes y la publicación de archivos.
Launchapad y Bazaar son las herramientas necesarias para colaborar con OpenERP.
Para poder colaborar en cualquier proyecto alojado en Launchpad tendremos que registrarnos en la web de Launchpad. Una vez tengas tu cuenta en launchpad puedes unirte al grupo openerp-community. No es necesario unirse a ningún grupo para descargarte el código, pero si para subir modificaciones.

Creando un repositorio distribuido en launchpad con bazaar

Registro:
Para usar este repositorio antes debemos registrarnos en launchpad desde aqui.

Creación de claves públicas y privadas:
Debemos crearnos una clave PGP ((Pretty Good Privacy; en español significa Privacidad Bastante Buena) y una clave ssh para poder subir los archivos a launchpad usando OpenPGP. 

Procedemos a crear primero la clave pública SSH:
ssh-keygen -t rsa
El anterior comando nos invitará a que le demos una ruta donde guardar las claves RSA, podemos pulsar la tecla ENTER para que las guarde por defecto en ~/.ssh/id_rsa.pub (donde el signo ~ se refiere a nuestro /home/usuario), o en su defecto escribir la ruta completa con el nombre que desee ~/.ssh/launchpad.pub si es que ya tiene una clave ssh creada anteriormente en su computador, luego debemos escribir una clave y repetirla.

Ahora vamos a crear nuestra clave privada GPG RSA:
gpg --gen-key
Se proporcionará un asistente interactivo, lo vamos rellenando.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 365
Key expires at lun 24 feb 2014 23:31:41 ECT
Is this correct? (y/N) y
En este ejemplo se ha elegido un tipo de cifrado RSA con una fortaleza de 2048 bits, lo cual genera una clave más extensa que la de 1024 bits por defecto. He elegido que la clave tenga una fecha de vencimiento hasta dentro de un año, por la razón que es una clave de ejempĺo para este tutorial, pero usted puede elegir que nunca expire.

Ingresar los datos personales requeridos, ingresar una contraseña para proteger la llave secreta y finalmente esperar que acabe el proceso de generación de nuestra clave GPG. La clave se almacena en ~/.gnupg/pubring.gpg

Ahora debemos exportar la clave para que launchpad sepa realmente que somos nosotros, para ello debemos exportarlo a el servidor hkp://keyserver.ubuntu.com ya que es lo que usa launchpad:
gpg --keyserver hkp://keyserver.ubuntu.com --send-keys GPGID

Donde GPGID es el identificador de nuestra clave GPG recien creada y que la podemos sacar con el comando:
gpg --fingerprint

Por ejemplo para la salida siguiente:
pub 2048R/5DD0537A 2012-07-08
Key fingerprint = A287 D78D 745F 8DE1 8626 A752 831D C3C6 5AD0 527A
uid Raul de Amaya (GNU/LINUX) <PEPITO@gmail.com>
sub 2048R/D336AADB 2012-07-08

Debemos exportar el GPGID 5DD0537A con el siguiente comando:
gpg --keyserver hkp://keyserver.ubuntu.com –send-keys 5DD0537A

Una vez creadas las claves ssh y GPG, debemos subirlas a https://launchpad.net/, la clave SSH la podemos añadir desde https://launchpad.net/people/+me/+editsshkeys y la KEY PGP desde https://launchpad.net/people/+me/+editpgpkeys.

Para obtener el contenido de las claves usamos nuestro editor preferido:
Clave ssh:
vim ~/.ssh/id_rsa.pub, copiar todo el contenido y pegarlo en el link arriba mencionado para su registro.
Con esto ya tiene su equipo preparado para subir modificaciones del código.

Clave GPG:
Tomar en cuenta el valor de Key fingerprint, ya que este es requerido en el link correspondiente al momento de registrarlo. Launchpad le enviará un correo el cual tiene que desencriptarlo, para lo cual hay que copiar el contenido del email (desde -----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux) hasta The Launchpad Team
) a un archivo y guardarlo en algún archivo.
Ejecutar el siguiente comando gpg --decrypt file.txt para lo cual le pedirá la contraseña que ingresó al inicio para proteger la llave secreta, del resultado obtenido dar clic en el link que se genera y aceptar la validación.

Repositorio distribuido Bazaar 
 
Instalamos bzr:
apt-get install bzr 
Ahora para finalizar creamos uno nuevo proyecto y lo subimos usando bzr:
mkdir MiProyecto
cd MiProyecto
bzr launchpad-login user
bzr init
bzr whoami "Your Name <name@example.com>"
bzr commit -m "Iniciando proyecto" --unchanged
bzr push lp:~user/+junk/MiProyecto
Le pedirá que digite la contraseña que ingresó al inicio para proteger la llave secreta.
Recuerda sustituir user es nuestro usuario en launchpad. Con esto ya tendrémos nuestra rama recién creada MiProyecto donde podemos editar y cambiar desde https://code.launchpad.net/people/+me.

Los usuarios que quieran recibir el código tendrán que usar el comando:
bzr branch lp:~user/+junk/MiProyecto

Si añadimos nuevos archivos en nuestro proyecto debemos ejecutar siempre lo siguiente:
cd MiProyecto
bzr add "Nombres de los archivos"
bzr commit -m "Un comentario de los cambios realizados"
bzr push lp:~user/+junk/MiProyecto
Así logramos que se registren los nuevos cambios en launchpad así como las nuevas revisiones.

Para descargarnos codigo del proyecto openerp escribimos el siguiente comando:
bzr branch lp:openerp-spain/6.1 openerp-spain61 

Autor,
Carlos Yumbillo
TRESCLOUD Cía. Ltda.

Mas información www.trescloud.com

viernes, 22 de febrero de 2013

Configurar Eclipse 4.2 para Desarollar Aplicaciones de Negocios con OpenERP (Debian, Ubuntu, Windows)

Es esta ocación les mostraré que pasos deben seguirse para configurar el entorno de programación Eclipse y que permita desarrollar aplicaciones de Negocios con Openerp según nuestros requerimientos.


Entre los requisitos a cumplir tenemos:
  • Máquina virtual de JAVA
  • Plugins requeridos por eclipse para el desarrollo con OpenERP
  • Dependecias propias de cada versión de OpenERP

Como primer requisito, eclipse necesita de la Máquina virtual de JAVA (JDK), la instalacion dependera del sistema operativo en uso, asi que lo analizaremos por separado.

Instalación de JAVA


Debian (Squezee):

Desde terminal (como root) ejecutamos el siguiente comando:

apt-get install sun-java6-jre sun-java6-jdk

Ubuntu (12.04):

En versiones recientes de Ubuntu la maquina virtual de Java por defecto es GIJ, en estos casos se debe realizar los siguientes pasos (más información aquí)

1) Añadimos los repositorios requeridos para la instalacion
sudo add-apt-repository ppa:webupd8team/java
2) Actualizamos los repositorios
sudo apt-get update

3) Instalamos Oracle Java 7
sudo apt-get install oracle-java7-installer

4) Para seleccionar la versión de Oracle Java se ejecuta el siguiente comando
sudo update-alternatives --config java

Aquí nos permitirá escoger que versión de Java queremos usar, en este caso seleccionaremos la que recién hemos instalado.


Windows:


Primero descargamos el ejecutable que realizará la instalación respectiva

Una vez descargada, debemos ejecutar este archivo y seguir las instrucciones. si se necesita más información puede seguir este enlace

Instalación de Eclipse Juno

Lo primero es descargar desde eclipse.org el entorno de desarrollo , esto dependerá del sistema operativo que utilicemos. En la página web tendremos varias opciones disponibles las cuales se actualizan constantemente, por este motivo les dejo el enlace de la versión "clásica"


Aquí podremos escoger la versión dependiendo el sistema operativo que usemos. Si el enlace anterior no funciona, puedes usar el siguiente enlace:


Lo que descargaremos será un archivo comprimido, en formato "tar.gz" para Linux y "zip" para Windows

Descomprimiendo y ejecutando "eclipse"

Aunque se menciona "instalación", realmente lo que hace es ejecutar el entorno de desarrollo una vez descomprimido, es así que la carpeta en la cual se descomprima "eclipse" será la que contenga la "instalación".

Para este tutorial se usará como carpeta raiz la carpeta "Escritorio".

Debian / Ubuntu:

La forma más sencilla es descomprimir usando el navegador de archivos "Nautilus" (en Gnome).

Damos click derecho sobre el archivo comprimido y escogemos la opción "extraer aquí...".

Windows:

Buscamos la carpeta donde se ha descargado el archivo, damos click con el botón derecho del mouse y seleccionamos "Extraer todo...".

En General:

Una vez que ha finalizado la extracción buscamos la carpeta "eclipse" y la movemos al escritorio.

Ahora ya podemos ejecutar eclipse, esto lo hacemos ingresando en la carpeta llamada eclipse y le damos doble click al archivo "eclipse" en Linux y "eclipse.exe" en windows. Si todo esta correcto nos aparecerá la pantalla de inicio de "eclipse juno" y nos pedirá escoger el Workspace para trabajar.


Plugins para eclipse

Eclipse permite la instalación de plugins para agregarle funcionalidad al entorno de desarrollo, en nuestro caso instalaremos los siguientes plugins:


  • JavaScript Development Tools
  • XML Editors and Tools
  • Eclipse Web Developer Tools
  • PyDev for Eclipse

Los 3 primeros plugins estan dentro del repositorio de juno, mientras que PyDev es externo y debe ser configurado.

Para instalarlos debemos ir al menu Help->Install new software...

Plugins de Juno

El cuadro de dialogo que se mostrará, en el campo "work with" deberemos seleccionar el repositorio denominado "Juno - http://download.eclipse.org/releases/juno". Si no aparece, hacer click en "Available Software Sites" y activarlo o agregarlo.


Para la instalacion de los 3 primeros plugins debemos usar el campo de busqueda con los nombres mostrados anteriormente y seleccionarlo en los resultados. Suele aparecer más de un resultado y esto es debido a que el mismo plugin puede estar incluido en varias categorias, así que solo es necesario marcar uno.

Una vez que se lo ha seleccionado continuamos con la instalacion del plugin, una vez finalizado Eclipse nos pedirá reiniciarlo, aceptaremos y esperaremos a que reinicie.

Esto lo repetiremos para los plugins que deseamos instalar, en este caso
  • JavaScript Development Tools
  • XML Editors and Tools
  • Eclipse Web Developer Tools

Plugin PyDev

Al acceder al menú "Help->Install new software..." se mostrará el mismo cuadro pero, en el campo "work with" deberemos escribir la siguiente direccion web: "http://pydev.org/updates" y a continuación presionar "Add...", nos aparecerá un dialogo solicitando el nombre del repositorio, pondremos "PyDev". (más información aquí)

A continuación debemos usar el campo de busqueda con el nombre del plugin, en este caso "PyDev for Eclipse" y seleccionarlo en los resultados. Luego finalizamos la instalación y reiniciamos eclipse.

Instalación OpenERP

En este Post no profundizaremos en la instalación de OpenERP pero se indicará enlaces donde se puede obtener más información

Debian / Ubuntu:

La instalación de OpenERP 6.1 está analizada en el siguiente blog:
Instalación de OpenERP 6.1

Windows:

El instalador all-in-one de OpenERP incluye todo lo necesario para que OpenERP trabaje sin probemas. Los siguientes enlaces descargarán la ultima revisión de cada versión de OpenERP. (En caso de problemas con los enlaces, puede buscar la versión requerida desde aquí)


Configuración del workspace

Para realizar la depuración del código de OpenERP dentro del workspace debe crearse un proyecto el cual contenga el código fuente de OpenERP.

Lo primero será crear un nuevo proyecto dentro del workspace, esto lo hacemos con el menú File->New->Project...->PyDev project, el directorio para el proyecto podemos elegir la ubicacion del workspace y crear un directorio llamado “proyecto-OpenERP”.

Ahora debemos agregar el código fuente, para esto se debe descargarlo desde esta dirección:


En esta dirección podemos obtener el código de la versión de OpenERP que requerimos, el mismo se encuentra comprimido y tiene la extensión "tar.gz". El contenido de este archivo debe ser extraido dentro de la carpeta creada desde eclipse para nuestro proyecto, en nuestro caso "proyecto-OpenERP".

Para extraer en Windows deberemos descargar utilitarios que nos ayuden en esta tarea, como 7-zip, más información siguiendo este enlace.

Para extraern en Linux simplemente click derecho sobre el archivo y escogemos "extraer aqui", luego movemos dentro de la carpeta "proyecto-OpenERP".

Una vez realizado este paso, desde eclipse debemos "refrescar" la lista de archivos, damos click derecho sobre "proyecto-OpenERP" y seleccionamos "refresh", así se mostrará el codigo de Openerp.

Nota para la versión OpenERP 6.0: Esta versión tiene una particularidad, posee un "cliente web" que debe ser descargado, descomprimido y ubicado en la carpeta del "proyecto-OpenERP" siguiendo la misma lógica que el servidor de openerp. Eclipse permite ejecutar varias consolas simultaneamente, así que es posible depurar el cliente web y el servidor openerp al mismo tiempo.

Depurar OpenERP

Para depurar OpenERP, damos click derecho sobre el archivo de ejecución del servidor y seleccionamos Debug as -> Python Run, ahora, dependiendo de la versión a usarse se tendrá una ubicación diferente del archivo de ejecución del servidor "openerp-server.py":

Versión 6.0: El archivo de ejecución se encuentra dentro de la carpeta "bin" de la carpeta extraida del archivo tar.gz del servidor OpenERP

Versión 6.1 y 7.0: El archivo de ejecución se encuentra dentro del raiz de la carpeta extraida del archivo tar.gz



Esto es todo por el momento, gracias por su atención y espero que este tutorial les sea muy útil!!!
Si tienen alguna duda o desean conseguir más información puedes ingresar a nuestro portal, www.trescloud.com

Saludos!!!

Creacion Módulo OpenERP TRESCloud



Creación de un


módulo en OpenERP




Indice

1. Composición de un modulo
   1.1 Elementos
   1.2 Estructura
         1.2.1 Estructura General
         1.2.2 Estructura principal del modulo
                 a.__init__.py
                 b.__openerp__.py
2. OpenERP Objects
   2.1 The ORM - Object-relational mapping - Models
   2.2 modulo.py
   2.3 Atributos para Objects
   2.4 Tipos de Campos ORM 
3. Construcción de la interfaz del modulo
   3.1 Común estructura XML
   3.2 Vistas
   3.3 Acciones
   3.4 Menús







1. Composición de un modulo 

1.1 Elementos:

• Los objetos de negocio: declaradas como clases de Python extendida de osv.osv (OpenObject class).
• Datos: XML / CSV archivos con meta-datos (vistas y la declaración de flujos de trabajo).
• wizards: formularios interactivos que se utilizan para ayudar a los usuarios.
• reports: RML (formato XML), MAKO o plantillas de OpenOffice informe, que se fusionó con cualquier tipo de datos empresariales, y generar HTML, ODT o informes en PDF.


1.2 Estructura:

1.2.1 Estructura General
Cada módulo está contenido en su propio directorio servidor /bin/ addons.


addons/
|- idea/
|- demo/
|- i18n/
|- report/
|- security/
|- view/
|- wizard/
|- workflow/
|- __init__.py
|- __openerp__.py
|- idea.py

1.2.2 Estructura principal del modulo

  • __init__.py
  • __openerp__.py
  • modulo.py
Explicaremos la funcionalidad de los puntos de la estructura principal.

a. __init__.py 
Es el descriptor de módulo de Python, porque un módulo de OpenERP es también un módulo regular de Python. 

Sirve para importar todos los archivos y directorios que contienen código python.




b.__openerp__.py
Contiene un único diccionario de Python con la declaración real del módulo: su nombre, las dependencias, la descripción y composición.
Maneja una estructura, que es la siguiente.




2. OpenERP Objects


Todo los ERP son piezas de datos que son accesibles a través de "objetos". Como un ejemplo, hay un objeto res.partner para acceder a los datos referentes a los partners(clientes), un objeto account.invoice para los datos referentes a las facturas, etc ..

Esto quiere decir que existe un objeto para todos los recursos y no por cada recurso. Si hablamos de términos de "orientación a objetos", podríamos decir que hay un objeto por nivel.

Para los desarrolladores:


OpenERP "objects" se llaman clases en la programación orientada a objetos.
A OpenERP "resources" se suele llamar un objeto en programación OO, instancia de una clase.

2.1 The ORM - Object-relational mapping - Models

El ORM, acrónimo de Object-Relational Mapping, es una parte central de OpenERP.


En OpenERP, el modelo de datos se describe y se manipula a través de las clases y objetos de Python. Es el trabajo ORM para cerrar la brecha - la forma más transparente posible para el desarrollador - entre Python y la base de datos relacional subyacente (PostgreSQL), que proporcionará la persistencia que necesitamos para nuestros objetos.

2.2. modulo.py


Este archivo contiene todas las clases Python con sus respectivas funciones, de acuerdo al siguiente:
Algo importante siempre dentro de un archivo .py es importar los osv.
from osv import osv
from osv import fields

También al declarar la clase debe ir como atributos (osv.osv) En el punto 2. Maneja la siguiente estructura.

class idea(osv.osv)
          _name='idea.idea'
          _columns={
               (se declaran las variables)
          }
          _default={
            ( No es necesario, se utiliza para crear variables con un valor por defecto)
          }
idea()




2.3. Atributos para Objects




2.4. Tipos de Campos ORM

Estos algunos de los tipos de campos de ORM



3. Construcción de la interfaz del modulo.

En la interfaz se manejan con una estructura xml, este se encarga de insertar los registros de datos que declaran los componentes de la interfaz del módulo. Cada módulo es un elemento de registro de datos regular: menús, vistas, acciones, roles, derechos de acceso, etc.
Estos Archivos XML son declarados en update_xml dentro del archivo __openerp__.py



3.1 Común estructura XML

Un XML contiene declaraciones de “record” en la siguiente forma:


3.2 Vistas

3.3 Acciones


3.4 Menús





sábado, 16 de febrero de 2013

Backups PostgreSQL OPENERP


Backups PostgreSQL OPENERP Incremental y diferencial


Antecedente


En vista de proteger la base de OpenERP frente a cualquier daño, se ve la necesidad de  mantener backups.

Objetivo


Obtener backups completos semanales y diarios diferenciales de la base de datos postgresql de OpenERP.

Resumen General


El backup semanal está calendarizado para ejecutarse todos los domingos a las 01:00 a.m., y los diferenciales de igual manera serán ejecutados a la 01:00 a.m., los días lunes, martes, miércoles, jueves, viernes y sábado.
Para poder hacer la restauración de un diferencial debemos tener a la mano siempre en backup completo del domingo anterior a ese diferencial.

 

Configuración de Backups Servidor (BDD)


Se generaron dos script, uno para los backups completos y otro para los backups diferenciales. Los mismos que se notan en la calendarización del Sistema Operativo del usuario openerp, que se muestra a continuación:



Nomenclatura de archivos


Se utiliza la siguiente nomenclatura para identificar a los archivos:

empresaerp_tipo_yyyy-mm-dd

Detalle:

Tipo
Ejemplo
Completo
empresaerp_full_2013-01-27
Diferencial
empresaerp_diff_2013-01-28
Completo Temporal (luego es borrado)
empresaerp_tempfull_2013-01-28

Nótese en los ejemplos, el backup completo fue el domingo 27 de enero del 2013, y al siguiente día lunes 28 se tiene el primer diferencial.

Script Backup Completo (Full)


Como se puede notar la ruta del script es /backups/scripts/backupfull.sh, el mismo que corre  los días domingo a la 01:00 a.m., a continuación el contenido del script.
#!/bin/bash
#
# Script by TRESCLOUD CIA. LTDA.
# www.trescloud.com
# +593 2 2269492
# Quito - Ecuador

echo Se mueve el anterior full del directorio last al directorio full
mv /backups/last/* /backups/full/

echo String para colocar la fecha al nombre de los backups
backup_date=`date +%Y-%m-%d`

echo Obtengo el nuevo full en el directorio last
pg_dump empresaerp -f /backups/last/empresaerp_full\_$backup_date

echo BORRADO DE BACKUPS

echo Cambiamos de directorio (Bases de datos)
cd /backups/full/

echo Dejar solo 2, en este caso 14 días de antiguedad, porque son semanales
numdiaslocbdd=14

for arch in $(find . -mtime +${numdiaslocbdd})
do
   echo Eliminando $arch
   rm -rf $arch
done

En resumen el script realiza los siguientes pasos:

1.       Mueve el último backup completo del directorio /backups/last hacia el directorio /backups/full.

2.       Saca en ese momento el respaldo completo de la base de datos y lo deja en la ruta /bakup/last/, para convertirse  en el punto de referencia de los respaldos diferenciales de la semana.

3.       Borra los backups completos de la carpeta /backups/full que tengan más de 2 semanas de antigüedad.

Dicho respaldo permanece en /backups/last hasta la siguiente ejecución calendarizada del script que tiene periodicidad semanal los domingos a las 1 a.m.
Todo el backup demora alrededor de 15 minutos, eso lo podemos notar en la fecha de modificación de la carpeta que tiene la fecha actual, en el paso 2.

Script Backup Diferencial (Diff)


Este script se encuentra en la ruta /backups/scripts/backupdiff.sh, el mismo que se ejecuta todos los días excepto el domingo, a la 01:00 a.m, a continuación el contenido del script

#!/bin/bash
#
# Script by TRESCLOUD CIA. LTDA.
# www.trescloud.com
# +593 2 2269492
# Quito - Ecuador

echo String para colocar la fecha al nombre de los backups
backup_date=`date +%Y-%m-%d`

echo Obtengo el nuevo full temporal en el directorio diff
cd /backups/diff/
pg_dump empresaerp -f /backups/diff/empresaerp_tempfull\_$backup_date

echo Guardo en una variable el nombre del full temporal
tempfull=empresaerp_tempfull\_$backup_date

echo Guardo en una variable el nombre de ultimo full
cd /backups/last/
lastfull=$(pwd)/

echo Saco un diferencial de ultimo full vs el full temporal actual
diff /backups/diff/$tempfull $lastfull > /backups/diff/empresaerp_diff\_$backup_date

echo Borro el full temporal
cd /backups/diff/
rm -rf empresaerp_tempfull\_$backup_date

echo BORRADO DE BACKUPS

echo Cambiamos de directorio para borar bases diferenciales históricas
cd /backups/diff/

echo Dejar solo 14, en este caso 14 días de antiguedad, porque son diarios
numdiaslocbdd=14

for arch in $(find . -mtime +${numdiaslocbdd})
do
   echo Eliminando $arch
   rm -rf $arch
done

En resumen el script realiza los siguientes pasos:

1.       Saca un respaldo completo temporal de la base de datos que se ubicará en la carpeta /backups/diff/.

2.       Genera un archivo diferencial, comparando el respaldo que se encuentra en /backups/last/ y el archivo que generó en el punto anterior, y este nuevo archivo diferencial lo guarda dentro de la ruta /backups/diff.

3.       Borra el respaldo completo temporal que hizo.

4.       Al final se verifica la antigüedad de los archivos, y se elimina automáticamente los que tengan más de 14 días de antigüedad.
Todo el proceso demora a la actualidad alrededor de 20 minutos, eso lo podemos notar en la fecha de modificación de los archivos dentro de la carpeta /backup/diff/.

Como restaurar un backup


Restauración de una base de datos Completa (Domingos)


Para realizar la restauración de la base de datos debemos ejecutar los siguientes pasos desde el usuario postgres.

1.       Ingresar el comando psql.

2.       Se debe eliminar las conexiones activas que se tengan con la base de datos que queremos remplazar, con el siguiente comando:

SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'empresaerp';


3.       Debemos borrar la base de datos, con el siguiente comando:

DROP DATABASE empresaerp;

4.       Recreamos la base de datos (vacía), con el siguiente comando:

CREATE DATABASE empresaerp WITH OWNER openerp TEMPLATE template0;

5.       Salir de psql ejecutando CTRL+D.

6.       Luego debemos restaurar el full del día correspondiente con el siguiente comando:

psql empresaerp < /backups/last/empresaerp_full_2013-01-27


Restauración de una base de datos diferencial (Lunes-Sábado)


Para restaurar un diferencial, necesitamos obtener primero el respaldo completo de ese día, en el ejemplo anterior se explicó como restaurar un respaldo completo del día domingo 27, digamos que necesitamos restaurar  el respaldo diferencial del día lunes 28.

Debemos realizar los mismos pasos explicados anteriormente excepto el último, que es el que ya realiza la restauración como tal.

Se debe generar el respaldo completo, tomando el último full que se encuentra en /backups/last, y el diferencial que necesitemos que se encuentra en /backups/diff, y debemos ejecutar el siguiente comando:

patch -b /backups/last/empresaerp_full_2013-01-27 /backups/diff/empresaerp_diff_2013-01-28

Este comando nos ayudará a unir el contenido de ambos correctamente de manera que se tenga un respaldo consistente, sin corrupción alguna.

Luego de ejecutar este comando, se renombrará el archivo que dice "empresaerp_full_2013-01-27" por   "empresaerp_full_2013-01-27.orig" que sigue siendo el mismo, y el nuevo archivo que es la unión del completo mas el diferencial tendrá el nombre  "empresaerp_full_2013-01-27", que será el que debemos restaurar con el paso 6 de los puntos explicados anteriormente.

NOTA: El comando deberá ser ejecutado dentro del directorio /backups/last/

para mas información contactanos www.trescloud.com