Come FTP più cartelle su un altro server utilizzando mput in Unix?


18

Ho effettuato l'accesso su un server (usando Putty). da lì mi collego usando FTP a un altro server. Voglio copiare diverse cartelle dal primo server al secondo server usando mput.

Piace:

ftp> mput folder1 folder2 folder3

Ma ottengo "cartella1: non un semplice file." ... e così via. Ognuna di queste cartelle ha sottocartelle, file (alcuni binari, altri no).

Come posso realizzare ciò che voglio senza zippare le cose e poi trasferirle?

Risposte:


19

La riga di comando FTP è piuttosto primitiva.

Non è possibile inviare in modo ricorsivo file / cartelle a un sito remoto.

Se si desidera ricreare una struttura di directory sul lato remoto uguale a quella locale, è necessario manualmente mkdirogni percorso e utilizzare mput *per inviare tutto in quella directory al lato remoto.

Due opzioni per renderlo più semplice:

  1. Smetti di usare il comando FTP primitivo (ncftp è una buona alternativa)

  2. Usa tar per caricare le cartelle, inviare il file ed estrarre dal lato opposto.


1
+1 per tar-> put-> untar
dave

1
-1 Perché la domanda pone "Come posso ottenere ciò che voglio senza comprimere le cose e poi trasferirle?", Sottintendendo che la persona non ha accesso shell alla macchina remota.
Steen Schütt,

11

Questo non è possibile con il normale programma ftp poiché mput non utilizza la ricorsione. È possibile utilizzare ncftp e quindi chiamare 'mput -r cartella'.

I migliori auguri, Fabian


Questo è esattamente quello che ho fatto di recente su una scatola RHEL 5. Nel pacchetto EPEL, l'eseguibile si chiama ncftpput.
Sopprimere il

Non è possibile modificare nulla nella configurazione del server. Sono solo un utente ...

Dipende dal tuo cliente. Non sul server.
metà

Preferisco farlo in questo modo. Grazie.
Mojtaba Rezaeian,

11

Ho realizzato uno 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

e lo chiamò con

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

sembra funzionare.


0

Secure Copy scp ha un flag ricorsivo -r che potresti trovare utile.


La domanda riguarda il semplice accesso ftp .. non scp / sftp!
Mojtaba Rezaeian,

-1

apri il powershell cd nella directory che vuoi caricare esegui i seguenti comandi:

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

Incolla i risultati nella tua finestra ftp. Godere. Inoltre, non dimenticare di aggiungere mput * per trasferire tutti i file dalla directory di base.


6
Da quando PowerShell funziona su un sistema Unix?
Michael Hampton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.