linux - servidor - vsftpd debian
Cómo descargar recursivamente una carpeta a través de FTP en Linux (12)
Estoy tratando de instalar una carpeta usando el cliente ftp de la línea de comandos, pero hasta ahora solo he podido usar ''get'' para obtener archivos individuales.
Hay ''ncftp'' que está disponible para la instalación en Linux. Esto funciona en el protocolo FTP y puede usarse para descargar archivos y carpetas de forma recursiva. Funciona en linux. Se ha utilizado y está funcionando bien para la transferencia recursiva de carpetas / archivos.
Compruebe este enlace ... http://www.ncftp.com/
No debes usar ftp
. Como telnet
, no utiliza protocolos seguros, y las contraseñas se transmiten en texto claro. Esto hace que sea muy fácil para terceros capturar su nombre de usuario y contraseña.
Para copiar directorios remotos de forma remota, estas opciones son mejores:
rsync
es la herramienta más adecuada si puede iniciar sesión a través dessh
, ya que solo copia las diferencias y puede reiniciarse fácilmente en el medio en caso de que se interrumpa la conexión.ssh -r
es la segunda mejor opción para copiar de forma recursiva las estructuras de directorios.
Ver:
Podría confiar en wget, que normalmente se encarga de que ftp se obtenga correctamente (al menos en mi propia experiencia). Por ejemplo:
wget -r ftp://user:[email protected]/
También puede utilizar -m
que es adecuado para reflejar. Actualmente es equivalente a -r -N -l inf
.
Si tiene algunos caracteres especiales en los detalles de la credencial, puede especificar los argumentos --user
y --password
para que funcione. Ejemplo con inicio de sesión personalizado con caracteres específicos:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
EDITAR Como lo señaló @asmaier, tenga en cuenta que incluso si -r
es para la recursión, tiene un nivel máximo predeterminado de 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
Si no quiere perderse subdirectorios, use mejor la opción de creación de reflejo, -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.
Si lftp
está instalado en su máquina, use mirror dir
. Y ya está hecho. Vea el comentario de Ciro a continuación si desea descargar recursivamente un directorio.
Si desea atenerse a la línea de comandos FTP, debe probar NcFTP. Luego puedes usar get -R para obtener recursivamente una carpeta. También obtendrá finalización.
Si puede usar scp
lugar de ftp
, la opción -r
lo hará por usted. Verificaría si puede usar un mecanismo de transferencia de archivos más moderno que FTP.
Si puede, le sugiero encarecidamente que tar
y bzip
(o gzip
, lo que sea que haga flotar su barco) el directorio en la máquina remota: para un directorio de cualquier tamaño significativo, los ahorros de ancho de banda probablemente valdrán el tiempo para comprimir / descomprimir.
Solo para complementar la respuesta dada por Thibaut Barrère.
solía
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
Tenga en cuenta la doble barra después del nombre del servidor. Si no pongo una barra adicional, la ruta es relativa al directorio de inicio del usuario.
- -nH evita la creación de un directorio que lleva el nombre del servidor
- -nc evita la creación de un nuevo archivo si ya existe en el destino (solo se omite)
- --cut-dirs = 5 me permite tomar el contenido de / absolute / path / to / directory y ponerlo en el directorio donde lanzo wget. El número 5 se utiliza para filtrar los 5 componentes de la ruta. La doble barra significa un componente extra.
Utilice WGet en su lugar. Es compatible con los protocolos HTTP y FTP.
wget -r ftp://mydomain.com/mystuff
¡Buena suerte!
referencia: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
alternar la solicitud mediante el comando PROMPT.
Uso:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
wget -r ftp://url
Funciona perfectamente para Redhat y Ubuntu
ncftp -u <user> -p <pass> <server>
ncftp> mget directory