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.
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.
Risposte:
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 -m
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="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.
wget -m
( --mirror
). wget -r
è limitato a una profondità di ricorsione di 5 per impostazione predefinita.
--user
e --password
anche su Red Hat. La mia opinione è: GNU Wget 1.11.4 Red Hat modified
mi chiedo se sia una cosa versione o una cosa distro ...
-l 0
, quindi non è necessario utilizzare --mirror
quale può avere alcuni effetti collaterali indesiderati come i file
wget --ask-password -rl 99 ftp://user@server.com
. In questo modo la password non è visibile con ps
e non rimane nella cronologia. Naturalmente, per la natura di ftp, viene inviato non crittografato al server.
$
), ad esempio--user='user' --password='pa$$word'
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=5
permette 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.--ftp-user=USER
e --ask-password
.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
open ftp://USERNAME:PASSWORD@HOST
dopo aver avviato ncftp ...
wget
, e anche più veloce in modalità TAR. Grazie!
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.
mirror -R dir
directory ricorsiva carica / aggiorna
mirror ./
per scaricare tutti i file e le cartelle in modo ricorsivo nel percorso corrente.
mirror
, per la directory corrente e le sue sottocartelle.
Se puoi usare scp
invece di ftp
, l' -r
opzione lo farà per te. Vorrei verificare se è possibile utilizzare un meccanismo di trasferimento file più moderno di FTP.
scp
proverò comunque a usare ssh, che non funzionerà se hai solo le credenziali FTP. Mi
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
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/
Se puoi, ti consiglio vivamente tar
e 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.
Non dovresti usare ftp
. Come telnet
se 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:
attiva / disattiva il prompt con il comando PROMPT.
Uso:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
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 0
come menzionato nei commenti