risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come scaricare in modo ricorsivo una cartella tramite FTP su Linux

Sto provando a ftp una cartella usando il client ftp dalla riga di comando, ma finora sono stato in grado di usare 'get' per ottenere singoli file.

303
Charles Ma

Potresti fare affidamento su wget che di solito gestisce ftp correttamente (almeno nella mia esperienza personale). Per esempio:

wget -r ftp://user:[email protected]/

Puoi anche usare -m che è adatto per il mirroring. Attualmente è equivalente a -r -N -l inf.

Se hai dei caratteri speciali nei dettagli delle credenziali, puoi specificare gli argomenti --user e --password per farlo funzionare. Esempio con accesso personalizzato con caratteri specifici:

wget -r --user="[email protected]" --password="Pa$$wo|^D" ftp://server.com/

EDIT Come sottolineato da @asmaier, fai attenzione che anche se -r è per la ricorsione, ha un livello massimo predefinito di 5:

       -r
       --recursive
           Turn on recursive retrieving.

       -l depth
       --level=depth
           Specify recursion maximum depth level depth.  The default maximum depth is 5.

Se non vuoi perdere i sottodirectory, meglio usare l'opzione mirroring, -m:

       -m
       --mirror
           Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets infinite
           recursion depth and keeps FTP directory listings.  It is currently equivalent to -r -N -l inf
           --no-remove-listing.
593
Thibaut Barrère

Giusto per completare la risposta data da Thibaut Barrère.

Ero solito

wget -r -nH --cut-dirs=5 -nc ftp://user:[email protected]//absolute/path/to/directory

Notare la doppia barra dopo il nome del server. Se non metto una barra in più, il percorso è relativo alla home directory dell'utente.

  • -nH evita la creazione di una directory chiamata dopo il nome del server
  • -nc evita di creare un nuovo file se già esiste nella destinazione (viene semplicemente saltato)
  • --cut-dirs = 5 mi permette di prendere il contenuto della directory/absolute/path/to/e di metterlo nella directory in cui lancio wget. Il numero 5 viene utilizzato per filtrare i 5 componenti del percorso. La doppia barra indica un componente aggiuntivo.
157
Ludovic Kuty
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
25
Vinko Vrsalovic

Se lftp è installato sul tuo computer, usa mirror dir. E hai finito. Vedere il commento di Ciro in basso se si desidera scaricare in modo ricorsivo una directory.

20
Dilawar

Se puoi usare scp invece di ftp, l'opzione -r farà questo per te. Vorrei verificare se è possibile utilizzare un meccanismo di trasferimento file più moderno rispetto all'FTP.

17
Greg Hewgill

Usa invece WGet. Supporta i protocolli HTTP e FTP.

wget -r ftp://mydomain.com/mystuff

In bocca al lupo!

riferimento: http://linux.about.com/od/commands/l/blcmdl1_wget.htm

8
Jason Stevenson

C'è 'ncftp' che è disponibile per l'installazione in linux. Funziona sul protocollo FTP e può essere utilizzato per scaricare file e cartelle in modo ricorsivo. lavora su linux. È stato utilizzato e funziona bene per la cartella ricorsiva/trasferimento di file.

Controlla questo link ... http://www.ncftp.com/

7
Cypher

Se si desidera attenersi alla riga di comando FTP, si dovrebbe provare NcFTP. Quindi puoi usare get -R per ottenere ricorsivamente una cartella. Otterrai anche il completamento.

3
Jazz

Se puoi, ti suggerisco vivamente tar e bzip (o gzip, qualunque cosa faccia galleggiare la tua barca) la directory sulla macchina remota - per una directory di qualsiasi dimensione significativa, i risparmi di larghezza di banda probabilmente valgono il tempo di comprimere/decomprimere.

3
Hank Gay

wget -r ftp://url

Funziona perfettamente per RedHat e Ubuntu

2
Phillip

Non dovresti usare ftp. Come telnet non sta usando protocolli sicuri e le password sono trasmesse in chiaro. Ciò rende molto facile per le terze parti acquisire il tuo nome utente e password.

Per copiare le directory remote da remoto, queste opzioni sono migliori:

  • rsync è lo strumento più adatto se puoi effettuare il login tramite ssh, perché copia solo le differenze e può facilmente riavviarsi nel mezzo in caso di interruzione della connessione.

  • ssh -r è la seconda opzione migliore per copiare ricorsivamente le strutture di directory.

Vedere:

1
Tilo