¿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?

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.


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


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.


0

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


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.


66
¿Desde cuándo se ejecuta PowerShell en un sistema Unix?
Michael Hampton
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.