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.