Come scaricare in modo ricorsivo una cartella tramite FTP su Linux [chiuso]


325

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


5
la risposta giusta è dal 6 aprile 11 alle 14:13 di lkuty. Non usare mget, non è affatto ricorsivo. risposta del 22 settembre 2008 alle 09:01 Thibaut Barrère è più facile da capire ma deve aggiungere l'opzione -l 0come menzionato nei commenti
chriscatfr

Risposte:


635

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

wget -r ftp://user:pass@server.com/

Puoi anche usare quello -madatto per il mirroring. Attualmente è equivalente a -r -N -l inf.

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

wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/

MODIFICA 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 perderti i subdir, usa meglio l'opzione di 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.

121
Migliore utilizzo wget -m( --mirror). wget -rè limitato a una profondità di ricorsione di 5 per impostazione predefinita.
asmaier

13
Ho dovuto usare --usere --passwordanche su Red Hat. La mia opinione è: GNU Wget 1.11.4 Red Hat modifiedmi chiedo se sia una cosa versione o una cosa distro ...
Devin

61
È possibile impostare un livello di ricorsione infinito con -l 0, quindi non è necessario utilizzare --mirrorquale può avere alcuni effetti collaterali indesiderati come i file
.listing

28
Io uso wget --ask-password -rl 99 ftp://user@server.com. In questo modo la password non è visibile con pse non rimane nella cronologia. Naturalmente, per la natura di ftp, viene inviato non crittografato al server.
Walter Tross,

7
Promemoria per newb bash: dovrai usare virgolette singole se il tuo nome utente o password hanno caratteri di controllo (come $), ad esempio--user='user' --password='pa$$word'
tobek

164

Solo per integrare la risposta data da Thibaut Barrère.

ero solito

wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory

Nota la doppia barra dopo il nome del server. Se non si inserisce una barra aggiuntiva, il percorso è relativo alla home directory dell'utente.

  • -nH evita la creazione di una directory che prende il nome dal nome del server
  • -nc evita di creare un nuovo file se esiste già sulla destinazione (viene appena ignorato)
  • --cut-dirs=5permette di prendere il contenuto della directory / absolute / path / to / e di inserirlo nella directory in cui si avvia wget. Il numero 5 viene utilizzato per filtrare i 5 componenti del percorso. La doppia barra indica un componente aggiuntivo.

3
Brillante. La possibilità di saltare i file già esistenti è ottima per recuperare il ritardo con le ultime aggiunte su una migrazione del server. rsync è più efficiente e più flessibile, ma a volte quell'opzione non è disponibile e solo FTP può essere utilizzato.
Jason,

Bei parametri qui specialmente -nc e --cut-dirs. Grazie per la condivisione!
Lance Cleveland,

2
Non mi fido sempre di "saltare i file esistenti" perché uno dei due potrebbe essere incompleto o diverso per dimensioni e contenuto, ma bene ha menzionato l'opzione
Daniel W.

Ancora oggi uso ancora questo comando wget quando non riesco a usare rsync. Le directory -nc e --cut-sono così utili!
Half Crazed,

4
Eccezionale! E se non vuoi mettere la tua password sulla riga di comando, puoi usare --ftp-user=USERe --ask-password.
sostituzione il

25
ncftp -u <user> -p <pass> <server>
ncftp> mget directory

Non sono riuscito ad accedere a un server FTP usando i parametri, ma usando la struttura open ftp://USERNAME:PASSWORD@HOSTdopo aver avviato ncftp ...
feeela,

+1 - So che questo post è vecchio, ma l'ho appena trovato e ncftp è stato davvero facile da usare. Ho usato -R per ottenere ricorsivo con ncftpget
Zack Macomber,

decisamente più affidabile di wget, e anche più veloce in modalità TAR. Grazie!
lencinhaus,

3
Questo non funziona come indicato su Ubuntu 14.04. La sintassi che ha funzionato per me è stata "get -R directory" invece di mget.
Ivan,

Ha funzionato per me su Ubuntu 14.04. Non ho dovuto dimenticare che era tutto lì.
Ashley,

22

Se lftpè installato sul computer, utilizzare mirror dir. E il gioco è fatto. Vedi il commento di Ciro qui sotto se vuoi scaricare ricorsivamente una directory.


7
tra l'altro, la mirror -R dirdirectory ricorsiva carica / aggiorna
Ciro Santilli 13 冠状 病 六四 事件 法轮功

1
può anche utilizzare mirror ./per scaricare tutti i file e le cartelle in modo ricorsivo nel percorso corrente.
Nabi KAZ,

Puoi anche solo digitare mirror, per la directory corrente e le sue sottocartelle.
Michael,

18

Se puoi usare scpinvece di ftp, l' -ropzione lo farà per te. Vorrei verificare se è possibile utilizzare un meccanismo di trasferimento file più moderno di FTP.


2
Ho votato a favore perché era esattamente il mio primo pensiero, anche se non risponde rigorosamente alla domanda così com'è.
Metao,

Quale proponi @ greg-hewgill? Ho un problema simile
Michal Gonda,

1
scpproverò comunque a usare ssh, che non funzionerà se hai solo le credenziali FTP. Mi
sembra


7

C'è 'ncftp' che è disponibile per l'installazione in Linux. Funziona con il protocollo FTP e può essere utilizzato per scaricare file e cartelle in modo ricorsivo. funziona su linux. È stato utilizzato e funziona perfettamente per il trasferimento di file / cartelle ricorsivo.

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


2
ncftp funziona anche su Windows
Ilya,

Adoro ncftp! Grazie.
Giovedì

3

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


Forse nel 2008, ma nel 2013 la larghezza di banda non ha più importanza e potresti avere FTP ma non l'accesso alla console :-)
Daniel W.

3

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


3

wget -r ftp://url

Funziona perfettamente per Redhat e Ubuntu


1

Non dovresti usare ftp. Come telnetse non utilizzasse protocolli sicuri e le password vengano trasmesse in chiaro. Ciò semplifica l'acquisizione di nome utente e password da parte di terzi.

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

  • rsyncè lo strumento più adatto se è possibile accedere 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:


non sicuro, solo ftp
JosFabre

è il 2015. FTP non dovrebbe essere usato.
Tilo,

2
Sono d'accordo. E i suggerimenti per una migliore sicurezza dovrebbero sempre essere dati. Ma la domanda riguardava FTP, quindi dire che non si dovrebbe usare non aiuta
JosFabre

Rispetto rispettosamente. Stanno usando lo strumento sbagliato per il lavoro. Dovrebbero imparare a usare strumenti sicuri e attuali, piuttosto che ftp degli anni '80. Più specificamente, nessuno dovrebbe più eseguire un server ftp: P
Tilo,

4
Scusate ma proprio la scorsa settimana stavo accedendo a un server che aveva solo la connettività FTP. Il mio compito era migrare lontano da esso.
Antti Haapala,

-6

attiva / disattiva il prompt con il comando PROMPT.

Uso:

ftp>cd /to/directory    
ftp>prompt    
ftp>mget  *

9
Down0-votato: mget non è ricorsivo.
Lance Cleveland,
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.