Baixe arquivos e crie a mesma estrutura de arquivos que a fonte

21

Eu tenho um arquivo de configuração que consiste na lista de URIs que eu quero baixar. Por exemplo,

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

Quero ler o arquivo de configuração e copiar cada URL, mas ao mesmo tempo criar a mesma estrutura de diretórios do host. Por exemplo, para a primeira linha do arquivo de configuração, quero criar a estrutura de diretórios Dir1 / Dir3 na minha máquina local (se não existir) e copiar o sds.exe para ... / Dir1 / Dir3 /

Descobri que posso baixar todos os URLs de um arquivo usando 'wget -i', mas como posso criar a estrutura de diretórios correspondente com esse

NGambit
fonte

Respostas:

27

De man wget:

-x, --force-diretórios:

[...]

crie uma hierarquia de diretórios, mesmo que um não tenha sido criado de outra forma. Por exemplo, wget -x http://fly.srk.fer.hr/robots.txt salva o arquivo baixado em fly.srk.fer.hr/robots.txt.

Chris Down
fonte
Obrigado pela recomendação do homem. Eu deveria me acostumar a me ajudar.
NGambit
Chris: Mas parece que se eu tiver o fly.srk.fer.hr/dir1/robots.txt, o wget -x cria o diretório fly.srk.fer.hr e coloca o arquivo chamado dir1 / robots.txt nele. O que eu preciso é que ele crie até os subdiretórios. ou seja, salvar o arquivo robots.txt para fly.srk.fer.hr/dir1/
NGambit
@NGambit É impossível criar um único arquivo nomeado dir1/robots.txtno Unix.
Chris Baixo
Você está certo. O arquivo de configuração que eu estava usando tinha '\' em vez de '/' (desde que foi analisado de outro arquivo baseado no Windows) em caminhos de diretório que estavam atrapalhando as coisas. Acabei de substituir o '\' por '/' e "wget ​​-x -i filename" funciona como um encanto
NGambit 18/04/2013
2
Uma observação: às vezes você deseja pular as primeiras N pastas na URL e adicionar:--cut-dirs=N
tokland
16

Para obter a estrutura que você está solicitando, sugiro usar -nH e -x.

Isso removerá o nome do host e criará a estrutura de diretórios esperada.

por exemplo

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

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

Na página do 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
fonte