martes, 2 de noviembre de 2010

Convertir una base de datos en access a mysql de forma periódica (I)

El escenario es el siguiente: se tiene un ordenador en la biblioteca del instituto que utiliza el famso Abies 2.0, programa de gestión de bibliotecas desarrollado por no recuerdo qué ministerio (por cierto, seguimos esperando la tan cacareada versión 3.0. A este paso la vamos a tener que hacer en código abierto).

Abies 2.0 guarda sus datos en una base de Access, formato mdb. Por otro lado, se ha desarrollado una aplicación web que muestra el estado del catálogo (libros disponibles, prestados, etc.). Esta aplicación está desarrollada en PHP y funciona sobre un servidor Apache y una base de datos en MySql. Por lo tanto es necesario convertir periódicmente la base de datos de access a MySql. Para ello hay que trabajar en dos equipos: el de la biblioteca y el servidor MySql.

1. Ordenador de la biblioteca: Hay que definir una tarea programada que ejecute el siguiente script, llamado subedatos.bat (todos los días a las 11:00, por ejemplo):
copy c:\Abies2.0\datos\abies.mdb
winzip32 -a abies.zip abies.mdb
ftp -s:biblioftp.scr
Para que este script funcione, tiene que estar instalado en el sistema el programa WinZip. También tiene que existir en el mismo directorio o carpeta un fichero, llamado biblioftp.scr, con los comandos del ftp, a saber:
open servidor.mired.local
user
biblioteca
biblioteca
put abies.zip
quit
Aquí estamos suponiendo que la máquina que alberga la base de datos MySql se llama servidor.mired.local. También podría usarse la IP de dicha máquina. También estamos suponiendo que en el servidor FTP instalado en dicha máquina hay definido un usuario llamado biblioteca, con contraseña biblioteca. Esto lo definiremos en el siguiente apartado.

2. Servidor MySql y FTP: En el equipo que hará de servidor MySql hay que configurar un servidor FTP también. Para ello instalaremos el vsftp:
sudo apt-get install vsftpd
Ahora habrá que configurar el servidor FTP modificando el fichero /etc/vsftpd.conf por ejemplo con gedit:
 sudo gedit /etc/vsftpd.conf
Cambiaremos:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

El resto de las opciones las dejaremos como vienen por defecto. Ahora definiremos el usuario para acceder por ftp:
sudo useradd -m biblioteca
sudo passwd biblioteca
Con el último comando le asignaremos la contraseña (usaremos "biblioteca", porque es la que definimos en la tarea programada del apartado 1).

Una vez hecho esto, hay que programar que todos los días, a las 12:30, por ejemplo, se descomprima el fichero abies.zip. Para ello, hay que utilizar el programa crontab, que es el equivalente a Tareas Programadas de Windows. Ejecutaremos el comando:  
sudo crontab -u biblioteca -e
Esto nos da a elegir entre varios editores. El nano (opción 2), es relativamente fácil de utilizar. El objetivo es escribir la siguiente línea: 
45 12 * * * unzip -o /home/biblioteca/abies.zip
Esto descomprime el archivo zip todos los días a las 12:45.

No hay comentarios:

Publicar un comentario