Subir el contenido de una carpeta por ftp mediante un script de Ant

1
24691

Subir el
contenido de una carpeta
por ftp

mediante un script de Ant

Si
alguna vez os habeis planteado ejecutar un script en windows que por
ftp suba el contenido de una carpeta (que puede contener ficheros y
otras carpetas), vereis que no es tarea sencilla.

En Autentia
tenemos que subir a producción los diferentes desarrollos
que
realizamos, y es muy costoso tener que abrir un cliente grafico, subir
lo desarrollado (en ocasiones se suben todos los ficheros aunque no
hayan cambiado), y hemos optado por esta opción para esta
tarea.

La
mayoria de clientes graficos de ftp para windows no nos permite
realizar tareas que sean programables (mediante el programador de
tareas), o necesitas un script para modo texto porque no tenemos
acceso al entorno gráfico.


Windows
provee una herramienta de consola llamada ftp que es un cliente de
dicho protocolo, pero que es poco útil para la tarea que queremos
realizar, dado que nuestra carpeta contiene otras carpetas, y la
tarea de ftp tiene que realizar una subida recursiva.

Ftp
tiene 2 comandos para enviar ficheros: put y mput. El primero permite
subir un único fichero, y mput permite subir varios ficheros, pero no
carpetas (con los ficheros que contengan).


Solucionaremos
esta problemática de manera muy sencilla.


Realizaremos
un pequeño script de Ant (
http://ant.apache.org/),
y para ello hay que descargarse dicho programa (para configurarlo y
aprender un poco qué es Ant mirar aquí
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=ant).

Ant
necesita para funcionar de una máquina virtual de java, asi que
necesitaremos instalar tambien al menos la jre de java
(
http://java.sun.com).

Una
vez instaladas y configuradas estas herramientas, vamos a proceder a
terminar de configurar Ant, puesto que ant funciona mediante ‘tareas’
(tasks), y las tarea de ftp que utilizaremos aquí necesita
unas librerias especiales.

Leyendo
la documentación de Ant apreciamos que necesitamos las
siguientes librerias:


jakarta-oro-2.0.7.jar (
http://jakarta.apache.org/oro/)


commons-net.jar
(
http://jakarta.apache.org/commons/net/index.html)

Una
vez descargados ambos jar los metemos dentro de la carpeta lib de Ant
(situada en %ANT_HOME%\lib).

Comprobamos
que tenemos ambos jar en nuestra carpeta lib de Ant:

Ahora
generamos un archivo al que llamaremos ftp-upload.xml
con el siguiente contenido:

<?xml version="1.0" encoding="utf-8"?>
<project name="ftp-upload" default="ftp-upload" basedir=".">
    <property file="ftp-upload.properties"/>
    <target name="ftp-upload">
        <ftp server="${ftp.host}"
            userid="${ftp.user}"
            password="${ftp.passwd}"
            depends="yes"
            remotedir="${ftp.remote.folderPath}">
            
            <fileset dir="${ftp.local.folderPath}"/>
        </ftp>
    </target>
</project>

No
merece la pena explicar ninguna de las líneas del anterior script
dada su sencillez, salvo esta opcion:

depends=»yes»

depends
nos indica si queremos realizar subidas al servidor sólo de
nuevos ficheros o ficheros que han cambiado respecto a los que hay en
el servidor ftp (poniendolo a yes), o
que suba todos los ficheros, independientemente si han cambiado o no
(poniendolo a no).

Creamos
otro fichero (donde guardaremos las propiedades del script), llamado
ftp-upload.properties
como sigue:

# fichero de configuracion para script de subida por ftp
# del contenido de una carpeta
# servidor de ftp
ftp.host = 192.168.1.1
# usuario para ftp
ftp.user = autentiaUser
# contraseña
ftp.passwd = autentiaPassword
# carpeta local cuyo contenido se subira al ftp
# (las rutas deben llevar los separadores '/' en lugar de '\')
# (no se debe poner la ultima '/')
ftp.local.folderPath = C:/Documents and Settings/autentia/ftp
# carpeta remota del ftp donde se almacenara el contenido de la carpeta local
# si el ftp ya apunta a la carpeta deseada puede dejarse en blanco
# (las rutas deben llevar los separadores '/' en lugar de '\')
ftp.remote.folderPath =

(También
podeis descargaros ambos ficheros desde aquí).

Si
ejecutamos en una consola el siguiente comando, ejecutaremos el
script creado en los pasos anteriores:

ant
-f ftp-upload.xml

Obtendremos
el siguiente resultado, si todo va bien:


(El resultado nos indica que se han enviado 0 archivos puesto que
tenemos a yes
 el campo depends
anteriormente comentado, y en los ficheros no había ninguna cambio
realizado).

1 COMENTARIO

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad