¿Cómo FTP múltiples carpetas a otro servidor usando mput en Unix?

18

Estoy conectado en un servidor (usando Putty). desde allí me estoy conectando usando FTP a otro servidor. Quiero copiar varias carpetas del primer servidor al segundo servidor usando mput.

Me gusta:

ftp> mput folder1 folder2 folder3

Pero obtengo "carpeta1: no es un archivo simple" ... y así sucesivamente. Cada una de estas carpetas tiene subcarpetas, archivos (algunos binarios, otros no).

¿Cómo puedo lograr lo que quiero sin comprimir las cosas y luego transferirlas?

7ochem
fuente

Respuestas:

19

La línea de comando FTP es bastante primitiva.

No puede enviar archivos / carpetas recursivamente hacia un sitio remoto.

Si desea volver a crear una estructura de directorio en el lado remoto igual que el local, necesita manualmente mkdircada ruta y usar mput *para enviar todo en ese directorio al lado remoto.

Dos opciones para hacer esto más fácil:

  1. Deje de usar el comando FTP primitivo (ncftp es una buena alternativa)

  2. Use tar para subir las carpetas, enviar el archivo y extraer en el otro lado.

Philip Reynolds
fuente
1
+1 para tar-> put-> untar
dave
1
-1 Porque la pregunta es "¿Cómo puedo lograr lo que quiero sin comprimir las cosas y luego transferirlas?", Lo que implica que la persona no tiene acceso de shell a la máquina remota.
Steen Schütt
11

Esto no es posible con el programa ftp normal ya que mput no usa recursividad. Puede usar ncftp y luego llamar a 'mput -r folder'.

Mis mejores deseos, Fabián

Halfdan
fuente
Eso es exactamente lo que hice recientemente en una caja RHEL 5. En el paquete EPEL, el ejecutable se llama ncftpput.
Suppressingfire
No se puede cambiar nada en la configuración del servidor. Solo soy un usuario ...
Depende de tu cliente. No en el servidor.
halfdan
Prefiero hacerlo de esta manera. Gracias.
Mojtaba Rezaeian
11

Hice un script bash:

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

y lo llamé con

find . -type d -exec ./recursive-ftp.sh {} \;

parece funcionar.

Stein Åsmul
fuente
0

Secure Copy scp tiene un indicador recursivo -r que puede resultarle útil.

Miguel
fuente
La pregunta es sobre el simple acceso ftp ... ¡no scp / sftp!
Mojtaba Rezaeian
-1

abra el cd de powershell en el directorio que desea cargar, ejecute los siguientes comandos:

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

Pegue los resultados en su ventana ftp. Disfrutar. Además, no olvide agregar mput * para transferir todos los archivos desde el directorio base.

Aprenda Powershell
fuente
66
¿Desde cuándo se ejecuta PowerShell en un sistema Unix?
Michael Hampton