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.