Descargue archivos y cree la misma estructura de archivos que la fuente

21

Tengo un archivo de configuración que consta de una lista de URI que quiero descargar. Por ejemplo,

  http://xyz.abc.com/Dir1/Dir3/sds.exe
  http://xyz.abc.com/Dir2/Dir4/jhjs.exe
  http://xyz.abc.com/Dir1/itr.exe

Quiero leer el archivo de configuración y copiar cada URL, pero al mismo tiempo crear la misma estructura de directorio que en el host. Por ejemplo, para la primera línea en el archivo de configuración, quiero crear la estructura de directorios Dir1 / Dir3 en mi máquina local (si no existe) y luego copiar sds.exe a ... / Dir1 / Dir3 /

Descubrí que puedo descargar todas las URL en un archivo usando 'wget -i', pero ¿cómo puedo crear la estructura de directorios correspondiente con eso?

NGambit
fuente

Respuestas:

27

De man wget:

-x, --force-directorios:

[...]

crear una jerarquía de directorios, incluso si no hubiera sido creado de otra manera. Por ejemplo, wget -x http://fly.srk.fer.hr/robots.txt guardará el archivo descargado en fly.srk.fer.hr/robots.txt.

Chris Down
fuente
Gracias por la recomendación del hombre. Debería acostumbrarme a ayudarme a mí mismo.
NGambit
Chris: Pero parece que si tengo fly.srk.fer.hr/dir1/robots.txt, entonces wget -x crea el directorio fly.srk.fer.hr y coloca el archivo llamado dir1 / robots.txt en él. Lo que necesito es que cree incluso los subdirectorios. es decir, guardar robots.txt en fly.srk.fer.hr/dir1/
NGambit
@NGambit Es imposible crear un solo archivo llamado dir1/robots.txten Unix.
Chris Down
Tienes razón. El archivo de configuración que estaba usando tenía '\' en lugar de '/' (ya que se analizó desde otro archivo basado en Windows) en las rutas de directorio que estaban arruinando las cosas. Acabo de reemplazar el '\' con '/' y "wget ​​-x -i filename" funciona de
maravilla
2
Una nota al margen: a veces desea omitir las primeras N carpetas en la URL, luego agrega:--cut-dirs=N
tokland
16

Para obtener la estructura que está solicitando, sugeriría usar -nH y -x.

Esto eliminará el nombre de host y creará la estructura de directorios esperada.

p.ej

wget -x -nH http://xyz.abc.com/Dir1/Dir3/sds.exe

- 'Dir1/Dir3/sds.exe' saved [1234]

Desde la página del manual:

-nH
--no-host-directories
   Disable generation of host-prefixed directories.  By default, invoking Wget with -r http://fly.srk.fer.hr/ will create a structure of directories beginning with fly.srk.fer.hr/.  This option disables such behavior.

-x
--force-directories
   ...create a hierarchy of directories, even if one would not have been created otherwise...
Joe
fuente