Copias de Seguridad FTP

 


Para acabar el mes de Agosto hoy quiero compartir con vosotros una pequeña utilidad para gestionar automáticamente la copia y restauración de Bases de Datos de nuestras aplicaciones PowerBuilder sobre MSQLServer.

Básicamente es una aplicación pensada para que se ejecute automáticamente programando una tarea de Windows que la dispare a la hora que nos interese. Se puede programar en un servidor para que realice las copias de seguridad, y en otro ordenador para que se las descargue y las restaure.

He intentado poner unas cuantas opciones para que se versátil, todas se parametrizan en un archivo .ini.

Vamos a intentar explicar todas las opciones repasando el archivo .ini de arriba a bajo.

[SETUP]

Databases --> Para indicar el nº de bases de datos que vamos a Copiar/Restaurar (1,2,3...)

LogId--> Usuario, para la conexión SQLServer.

 LogPass--> Clave Encriptada para la conexión SQLServer.

serverName --> Servidor para la conexión SQLServer, para mas opciones se puede modificar la función gf_conectar(as_database).

token --> Token generado con el programa EncryptGenerator para almacenar la clave de desencriptación. Hay que usar ese programa para generar las claves encriptadas del correo electrónico y del servidor FTP.

[Database1] --> Por cada base de datos que queramos copiar/restaurar hay que crear una clave.

Database --> Nombre de la base de datos, ejemplo: AdventureWorks2012

filename --> Nombre del archivo generado, ejemplo: AW2012.bak

[MAIL] --> Configuración opcional si queremos enviar e-mails con los resultados.

Server --> Servidor e-mail 

Userid --> Usuario cuenta e-mail.

Password --> Clave  Encriptada cuenta e-mail.

email --> E-mail del Destinatario.

name --> Nombre del Destinatario.

[FTP] --> Configuración Opcional si queremos subir/descargar la copias de un servidor FTP.

Server --> Dirrección FTP

Port --> Puerto FTP (normalmente el 21).

Userid --> Usuario cuenta FTP

Password --> Clave Encriptada cuenta FTP

InitialDirectory --> Directorio inicial FTP, poner // si no hay que entrar en ninguno.

Pasive --> Para indicar si es servidor es Pasivo(Y/N), de lo contrario es Activo.

Ascii --> Tipo transferencia Ascii (Y/N) de lo contrario es Binaria.


[OPTIONS] --> Opciones de Parametrización.

ProgramMode --> Como se comportará el programa: Cliente o Servidor (C/S)

Compress --> Si queremos comprimir las copias, o las que queramos restaurar están comprimidas (S/N).

CompressFormat --> Formato de Compresión  a elegir Zip, 7Zip, Gzip, Tar (Z/7/G/T)

Ftp --> Si queremos subir o bajar las copias de seguridad a un Servidor FTP (S/N)

Ftp_FileMode --> Modo en que se suben o bajan los Archivos. (R/D). R usa las funciones FileRead y FileWrite. Si elegimos D, se usan las funciones GetFile y PutFile.

SendMail --> Si queremos enviar un e-mail con los resultados (S/N)

RestoreOrBackup --> Si queremos que haga la Copia o Restaure (S/N)

CMD --> Se puede indicar la ruta de un archivo .bat para ejecutar algún comando adicional al final del todo.

Como podéis ver hay bastantes opciones, algunas parecen tontas, pero si en un momento dado se quiere hacer una tarea mas especifica, basta con modificar las opciones y ejecutar el programa.

En mi caso yo tengo el programa en un servidor donde tengo la base de datos de mis aplicaciones y ejecuto automáticamente el programa por la noche con una tarea programada. 

En este caso solo creo las copias de las bases de datos y las comprimo. No las subo a ningún FTP porque tengo configurada la misma carpeta como un servidor FTP.

En un ordenador ajeno, tengo configurado el programa para que a mitad noche se conecte al servidor FTP, descargue las copias comprimidas y las restaure.

Hay que tener en cuenta que para que funcione la restauración hay que tener la base de datos en ese ordenador si no la restauración fallará.

Este programa lo he intentado crear usando un mecanismo de excepciones en vez de usar funciones que devuelvan valores de TRUE/FALSE. He usado el objeto n_ex descrito en artículo Power building with exceptions de la página Elegant Programming Club.

También me apoyado en dos ejemplos de código gratuito de la página Topwiz Software

Winsock FTPClient

Por último, cabe mencionar que he usado el nuevo objeto SMTPObject de PowerBuilder 2022 R2 para el envío de correos electrónicos  y los objetos CompressorObject y ExtractorObject para comprimir y descomprimir introducidos en PowerBuilder 2019.

En fin, no me enrollo mas y os dejo el enlace de descarga:

github.com/rasanfe/BackupFtpApp.git


Comentarios