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