[Ayuda] Script de subida/descarga de ficheros a FTP

Buenas tardes a todos.

Estoy intentando automatizar una tarea de bajada y otra de subida a un FTP pero estoy muy perdido. A ver si alguien me puede hechar una mano, ya que con los parametros en el filezilla me funciona la todo pero en la linea de comandos no.

Lo que necesito es una conexion FTP a una IP por el puerto 990 especificando un usuario y contraseña. Una vez conectado necesito que se descargue unos ficheros de x carpetas.

Otro comando sería a la inversa, que suba unos ficheros al mismo FTP.

¿Alguien me puede hechar una mano para realizar esta tarea? La idea es después ejecutarla como una tarea programada de Windows.

Muchas gracias.
prueba con freefilesync, y q te sincronice las carpetas que quieras, tiene opción de generar un archivo bach que es el que puedes pasar al programador de tareas de windows, no te pongo más porque estoy desde el movil.
1 saludo
Otro desde móvil así q no puedo liarme a picar, pero pon tu código y lo miramos. Solo una cosa, la conexión será: ftp user:pass@host puerto y luego redirige los comandos. En Unix lo tengo probado hasta la saciedad, pero en dos lo tengo más verde
Si es un script sencillo puedes usar el ftp de "cmd" de msdos de toda la vida:

Para descargar crea un fichero .bat llamado por ejemplo "descarga.bat" y escribes esto en el interior:
@echo off
ftp -s:script_descarga.txt -n

y en la misma carpeta creas un fichero llamado "script_descarga.txt" con algo así en el interior:
open
IP_DEL_SERVIDOR PUERTO_DEL_SERVIDOR
user
USARIO_FTP
CONTRASEÑA_FTP
prompt
cd /DIRECTORIO_REMOTO_A_LOS_FICHEROS_A_DESCARGAR
lcd "DIRECTORIO_LOCAL_DONDE_BAJAR_FICHEROS"
binary
mget NOMBRE_PRIMER_FICHERO
mget NOMBRE_SEGUNDO_FICHERO
mget ETC
mget *.rar (ADMITE COMODINES)
mget *.* (ADMITE COMODINES)
close
bye



Para subir crea un fichero .bat llamado por ejemplo "subida.bat" y escribes esto en el interior:
@echo off
ftp -s:script_subida.txt -n

y en la misma carpeta creas un fichero llamado "script_subida.txt" con algo así en el interior:
open
IP_DEL_SERVIDOR PUERTO_DEL_SERVIDOR
user
USARIO_FTP
CONTRASEÑA_FTP
prompt
cd /DIRECTORIO_REMOTO_A_LOS_FICHEROS_A_DESCARGAR
lcd "DIRECTORIO_LOCAL_DONDE_BAJAR_FICHEROS"
binary
mput NOMBRE_PRIMER_FICHERO
mput NOMBRE_SEGUNDO_FICHERO
mput ETC
mput *.rar (ADMITE COMODINES)
mput *.* (ADMITE COMODINES)
close
bye


Con hacer doble clic en cada .bat o llamarlos con una tarea programada deben subir o bajar los ficheros del listado. El "ftp" de msdos tiene muchas limitaciones con ftp pasivos y demás, si ves que te da problemas prueba con el WinSCP que admite protocolo FTP, es más potente y es muy sencillo de scriptear también.

Espero que te sirva, un saludo! [bye]
Gracias a todos por las respuestas. El FTP al que necesito conectar no es de forma básica, usa los parámetros de la imagen que adjunto:

[url]<a href='http://www.subirimagenes.com/otros-ftp-8546987.html'><img src='http://s2.subirimagenes.com/otros/previo/thump_8546987ftp.jpg' alt='subir imagenes' border='0'></a>[/url]

Es FTP implícito sobre TSL y usa el puerto 990.

¿Puedo usar igualmente el ftp de la linea de comandos de windows o recomendais otra cosa teniendoi en cuenta que soy novatillo en esto de Scripts de FTP?

Gracias.
Si usas TLS no te vale el "ftp" de la línea de comandos ya que no soporta FTPS.

En su lugar, si buscar scriptear un proceso, te recomendaría que instalases WinSCP (tiene un programa de línea de comandos) y crearas un script para bajar y otro para subir. Para bajar sería algo así en un ".bat" en la misma carpeta del compilado WinSCP.com

@echo off

del scriptget.tmp /F /Q
rem Generando Script
echo open sftp://USUARIO_FTP:PASSWORD_FTP@IP_SERVIDOR:PUERTO_SERVIDOR -hostkey="SI HACE FALTA" > scriptget.tmp
echo option transfer bin >> scriptget.tmp
echo option confirm off >> scriptget.tmp
echo lcd DIRECTORIO_LOCAL >> scriptget.tmp
echo cd DIRECTORIO_REMOTO >> scriptget.tmp
echo get *.* >> scriptget.tmp
echo exit >> scriptget.tmp

rem Lanzando Script
WinSCP.com /script=scriptget.tmp

rem Borrando Script
del scriptget.tmp /F /Q


Prueba y nos cuentas, un saludo. [bye]
Gracias por la ayuda pero la verdad es que no me aclaro demasiado con el winscp...

¿Podríais darme una explicacion para novatos en esto? Te lo agradecería muchísimo.

Lo que necesito es conectar al FTP (implícito SSL y puerto 990) y descargar el contenido de una carpeta a otra local.

Por otro lado necesito hacer uno de subida tambien de una carpeta a otra.

Perdonad la molestia pero no lo veo nada intuitivo y agradecería muchísimo toda ayuda posible.

Un saludo.
Marco_Alexio escribió:Gracias por la ayuda pero la verdad es que no me aclaro demasiado con el winscp...

¿Podríais darme una explicacion para novatos en esto? Te lo agradecería muchísimo.

Lo que necesito es conectar al FTP (implícito SSL y puerto 990) y descargar el contenido de una carpeta a otra local.

Por otro lado necesito hacer uno de subida tambien de una carpeta a otra.

Perdonad la molestia pero no lo veo nada intuitivo y agradecería muchísimo toda ayuda posible.

Un saludo.


Tienes que lanzar "Winscp.com" que está en la carpeta donde instales el WinSCP pasándole los parámetros de conexión que necesites. Lo mejor es crear un archivo con la configuración, "scriptget.tmp" en mi ejemplo, que lleva dentro las instrucciones de dónde conectarse y demás y lo lanzar con "WinSCP.com /script=scriptget.tmp".

Si no tienes mucha idea lo mejor sería que me pasases información de la cuenta por privado (siempre que sea posible por temas de privacidad y legalidad) con una contraseña o llave TLS temporal y cuando te mande el script que necesites le cambies la clave o la llave TLS para que yo ya no pueda entrar.

Ya nos cuentas, un saludo.
¿Y no puede instalar PHP en su pc y hacer un script que se conecte a sftp y haga las tareas?
Luego programas que lance el script cuando tu quieras.
9 respuestas