2010-06-09 39 views
26

Necesito descargar todo, desde un servidor FTP hasta el alojamiento en un servidor diferente. Tengo acceso de shell solo al servidor en el que estoy descargando los archivos. ¿Cómo, utilizando el comando FTP de Linux, puedo descargar todos los archivos, creando los directorios necesarios para ellos en el proceso?Descarga de todos los archivos de un servidor FTP

Respuesta

53

Uso wget de esta manera (m para mirroring):

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

Si su nombre de usuario o contraseña contienen caracteres especiales, es posible que necesite utilizar el formato:

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

Alternativamente, encontré this guide que le muestra cómo hacerlo usando ncftp en Debian. Necesitará acceso raíz al nuevo servidor si ncftp no está instalado.

En resumen:

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

Gracias. De hecho, lo había encontrado antes de ver esto. No estaba usando los términos correctos de búsqueda de Google las primeras cinco veces. – Navarr

+3

Si obtiene un mensaje de error de "puerto incorrecto", es posible que tenga una dirección de correo electrónico como nombre de usuario (Internet se está volviendo extraño) y @ es un wget confuso. Pruebe: wget -m --usuario [email protected] --contraseña myPassword ftp://example.com –

+0

Cuando la contraseña tiene '@' al final, esto no funciona. ¿Hay una alternativa? –

1

Algunos servidores FTP permiten descargar directorios enteros sufijando su nombre con .tar o .tgz. El servidor luego crea un archivo de ese directorio.

1

Otra forma es usar ftp. Aquí hay un ejemplo de script de shell usando 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 
Cuestiones relacionadas