subir servidor script por para enviar copiar configurar configuracion como comandos archivos linux command-line ftp

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 de ssh , 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:

  • Página de manual de rsync

  • ssh man page


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.


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