ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Giusto per completare la risposta data da Thibaut Barrère.
Ho usato
wget -r -nH --cut-dirs=5 -nc ftp://user:[email protected]//absolute/path/to/directory
Nota la doppia barra dopo il nome del server. Se non metti una barra in più 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à nella destinazione (viene semplicemente saltato)--cut-dirs=5
permette di prendere il contenuto di /absolute/path/to/directory e di metterlo nella directory in cui avvii wget. Il numero 5 viene utilizzato per filtrare i 5 componenti del percorso. La doppia barra indica un componente in più.
Puoi fare affidamento su wget che di solito gestisce correttamente ftp get (almeno nella mia esperienza). Ad 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 della credenziale, puoi specificare --user
e --password
argomenti per farlo funzionare. Esempio con login personalizzato con caratteri specifici:
wget -r --user="[email protected]" --password="Pa$$wo|^D" ftp://server.com/
Come sottolineato da @asmaier, 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 le sottocartelle, 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.
Se lftp
è installato sulla tua macchina, usa mirror dir
. E hai finito. Vedi il commento di Ciro qui sotto se vuoi scaricare ricorsivamente una directory.