2010-06-09 17 views
26

Devo scaricare tutto da un server FTP all'hosting su un server diverso. Ho accesso alla shell solo al server in cui sto scaricando i file. In che modo, utilizzando il comando FTP di Linux, posso scaricare tutti i file, creando le directory necessarie per loro nel processo?Download di tutti i file da un server FTP

risposta

53

Usa wget in questo modo (m per il mirroring):

wget -m ftp://username:[email protected] 

Se il nome utente o la password contengono caratteri speciali, potrebbe essere necessario utilizzare il formato:

wget -m --user=username --password=password ftp://ip.of.old.host 

In alternativa, ho trovato this guide che mostra come farlo usando ncftp in Debian. Sarà necessario l'accesso root al nuovo server se ncftp non è già installato.

In breve:

sudo apt-get install ncftp 
ncftpget –T –R –v –u "ftpuser" ftp.nixcraft.net /home/vivek/backup /www-data 
+0

Grazie. In realtà l'avevo trovato io stesso proprio prima di vederlo. Non stavo usando i termini di ricerca di google giusti le prime cinque volte. – Navarr

+3

Se ricevi un messaggio di errore "porta errata" potresti avere un indirizzo e-mail come nome utente (Internet sta diventando strano) e @ sta confondendo wget. Prova: wget -m --user [email protected] --password myPassword ftp://example.com –

+0

Quando la password ha '@' alla fine, questo non funziona. C'è un'alternativa? –

1

Alcuni FTP server permettono di scaricare intere directory dal suffisso il loro nome con .tar o .tgz. Il server quindi crea un archivio di tale directory.

1

Un altro modo è utilizzare ftp. Ecco uno script di shell di esempio che utilizza ftp:

#! /bin/bash 

ftp -n << 'EOF' 
open ftp.your_ftp_host.com 
quote USER your_username_here 
quote PASS your_password_here 
cd gets 
prompt no 
mget * . 
bye 
EOF 
Problemi correlati