¿Cómo hago FTP múltiples archivos desde la línea de comando?

25

Me gustaría enviar por FTP el contenido de un directorio, pero parece que no puedo encontrar la manera correcta de usar un comodín. Parece que esto sería algo común; ¿Está equivocado todo mi enfoque?

El comando es

ftp -s:"C:\Scripts\ftp01" ftpserver.domain.com

El script que se llama está debajo. Actualizado por billinkc.

username
password
ascii
cd "/destinationfolder"
lcd "C:\Backup"
mput *.bak
close
quit

Se inicia el script, no se copian archivos y la sesión FTP permanece abierta.

230 User username Logged in Successfully
ftp> ascii
200 TYPE Command OK A
ftp> cd "/destinationfolder"
250 Directory successfully changed to "/destinationfolder"
ftp> lcd "C:\Backup"
Local directory now C:\Backup.
ftp> mput *.bak
mput 9829980.bak? close
mput 6406766.bak? quit
ftp>
ftp>

Conclusión

Necesitaba agregar la bandera para suprimir el comando PROMPT:

ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com
mmcglynn
fuente

Respuestas:

36

Antes de emitir el mputcomando, emita un promptcomando para deshabilitar el modo interactivo. Una vez que está apagado, no debería pedirte que confirmes cada archivo para el mput(o un mget).

Ƭᴇcʜιᴇ007
fuente
3
Para aquellos que se preguntan "cuál es la sintaxis de este promptcomando", literalmente simplemente escriben "prompt" y alterna la solicitud de verdadero a falso.
Noumenon
2
Otra forma de deshabilitar la solicitud interactiva es usar el -iindicador en el ftpcomando en sí (por ejemplo ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com). Los documentos describen la -iopción como: "Desactiva la solicitud interactiva durante las transferencias de archivos múltiples".
Jesse Webb
3

Nunca he intentado usar la ruta de acceso para las carpetas locales, pero lo he hecho cambiando el directorio local ( lcd):

username
password
ascii
cd "/destinationfolder"
lcd Backup
mput *.bak
close
quit
billinkc
fuente
2

Intente insertar la línea prompt njusto antes de la mputlínea.

horacio
fuente
1

Usa el mputcomando para poner varios archivos.

Chris S
fuente
1
Sí, eso es lo que estoy usando
mmcglynn
¿Detrás de un firewall (particularmente SOHO o unidades económicas de grado comercial)? El construido en ftpWindows no admite el modo PASV, por lo que la transferencia se bloqueará y nunca se completará.
Chris S
1

Si tiene derechos de administrador, puede instalar ncftpput . Es fácil de usar y excelente para cargas FTP recursivas. El cambio para la transferencia recursiva es -R.

El software está incluido en la mayoría de las distribuciones de Linux. Para Windows es instalable con Cygwin .

Tim Haegele
fuente
1

Como mencionó Tim Haegele, ncftp hace esto sin problemas en Linux, si puede y está dispuesto a instalarlo:

sudo apt-get install ncftp
ncftp -R ftpserver.domain.com . /Scripts/ftp01
Collin Anderson
fuente
0

Este es el guión que usé y que funcionó para mí.

Para ftp1.bat (script):

ftp -i -s:\tmp\ftp.txt

Para ftp.txt (script):

Open ip
username
password
prompt
lcd C:\YourFolder\YourFolder
binary
cd /DestinationFolder
prompt
mput *.bak
cd ..
disconnect
quit

Tal vez hay partes que no son necesarias, pero lo pongo como funcionó para mí, espero que ayude

Adrian Chacon
fuente