Hace unos días me vi en la necesidad de descargar ficheros periódicamente de varios servidores ftp en un Windows 7. En este caso concreto, además, los ficheros se irían actualizando día a día, lo que me obligaba a entrar en cada una de las cuentas ftp cada vez que quisiera sincronizar los datos, forzar la descarga de todos los ficheros, especificar que no sobreescribiera los ya existentes y comprobar de esta forma si había novedades o no. Eso para cada una de las cuentas ftp, claro. En fin, una tarea tediosa como mínimo.

En Linux tenía claro como automatizarlo todo, pero no así en Windows. Estuve investigando un poco para ver qué posibilidades tenía para solucionar este tema y solo encontré dos o tres clientes ftp de pago que realizaban este tipo de tarea. Aún así tampoco terminaba de convencerme ninguno. Finalmente, encontré un software gratis que permite hacerlo por medio de un script. Veamos como configurarlo paso a paso.

  1. El software se llama WinSCP, es gratis y puede descargarse directamente desde su página web. Lo descargamos e instalamos. Una vez hecho esto, no necesitaríamos ni siquiera arrancarlo
  2. Abrimos nuestro editor de texto preferido (notepad, por ejemplo, o notepad++ en mi caso) y creamos un nuevo script con el siguiente formato:

    # Opciones generales
    # Automatically abort script on errors
    option batch abort
    # Disable overwrite confirmations that conflict with the previous
    option confirm off

    # Primera cuenta FTP
    open ftp://usuario_1:contraseña_1@servidor_ftp_1
    option transfer binary
    synchronize local -criteria=size c:\ruta_a_guardar_1 /
    close

    # Segunda cuenta FTP
    open ftp://usuario_2:contraseña_2@servidor_ftp_2
    option transfer binary
    synchronize local -criteria=size c:\ruta_a_guardar_2 /
    close

    exit

    Para cada una de las cuentas debemos especificar tanto el usuario del ftp y la clave, como el servidor ftp y la ruta en la que queremos sincronizar el contenido de la carpeta. Es importante especificar “synchronize local” para que solo sincronice en una dirección, de forma que si borramos o añadimos ficheros en local, esto no afecte al directorio remoto. Por supuesto la dirección puede cambiarse, e incluso sincronizarse en ambas direcciones en caso en que fuera nuestra intención. Para más información, podéis echar un vistazo al manual de scripting

  3. Una vez generado el script, podemos ejecutarlo desde una ventana cualquiera de msdos (Barra de Windows -> Todos los Programas -> Accesorios -> Símbolo de sistema o, directamente, llamando al comando cmd). Para ello empleamos el siguiente comando:
    "C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script=c:\ruta_script\script.txt
  4. Para terminar de rizar el rizo, podríamos configurar la tarea para que se ejecutara periódicamente en segundo plano y actualizara los ficheros necesarios. Para eso podéis echarle un vistazo a este apartado del manual de WinSCP.

Espero que os sea tan útil como me está siendo a mi estos días. Tened en cuenta que, aunque WinSCP es gratis, si le sacáis rendimiento y os apetece podéis plantearos realizar una donación a sus desarrolladores via paypal desde su página web.

Etiquetas: , , , , , , , ,