Como baixar um diretório e subdiretórios inteiros usando o wget?

143

Estou tentando fazer o download dos arquivos de um projeto usando wget, pois o servidor SVN desse projeto não está mais em execução e só consigo acessar os arquivos por meio de um navegador. Os URLs base para todos os arquivos são iguais aos

http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/ *

Como posso usar wget(ou qualquer outra ferramenta semelhante) para baixar todos os arquivos deste repositório, onde a pasta "tzivi" é a pasta raiz e existem vários arquivos e subpastas (até 2 ou 3 níveis) nela?

code4fun
fonte
3
Você não pode fazer isso se o servidor não tiver uma página da web com uma lista de todos os links para os arquivos necessários.
Eddy_Em
1
você sabe o nome dos arquivos?
precisa
Eu não sei o nome de todos os arquivos. Tentei o wget com a opção recursiva, mas também não funcionou. Isso ocorre porque o servidor não possui nenhum arquivo index.html que lista todos os links internos.
code4fun
Você tentou a opção de espelhamento do wget?
Tomasz Nguyen

Respostas:

193

Você pode usar isso no shell:

wget -r --no-parent http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

Os parâmetros são:

-r     //recursive Download

e

--no-parent // Don´t download something from the parent directory

Se você não deseja fazer o download de todo o conteúdo, pode usar:

-l1 just download the directory (tzivi in your case)

-l2 download the directory and all level 1 subfolders ('tzivi/something' but not 'tivizi/somthing/foo')  

E assim por diante. Se você não inserir nenhuma -lopção, wgetusará -l 5automaticamente.

Se você inserir um, -l 0baixará toda a Internet, porque wgetseguirá todos os links que encontrar.


fonte
19
Ótimo, simplificando para o próximo leitor: wget -r -l1 --no-parent http://www.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/foi a resposta para mim. Obrigado sua resposta.
Isomorphismes
2
Eu tentei o comando acima para obter todos os arquivos, http://websitename.com/wp-content/uploads/2009/05mas tudo o que obtive foi um index.htmlarquivo que não tinha nada. Não consigo entender o que senti falta.
Vivek Todi
@up: Note que o wget segue links, então você precisa de uma listagem de diretório;)
11
Eu sei que isso é bastante antigo. Mas o que eu também achei útil foi a -e robots=offtroca. ;)
Matthias W.
2
Por que você não remove o "esqueci algo importante" e apenas corrige a resposta ???
User1271772
16

Você pode usar isso em um shell:

wget -r -nH --cut-dirs=7 --reject="index.html*" \
      http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

Os parâmetros são:

-r recursively download

-nH (--no-host-directories) cuts out hostname 

--cut-dirs=X (cuts out X directories)
Rajiv Yadav
fonte
4

use o comando

wget -m www.ilanni.com/nexus/content/
lanni654321
fonte
1

você também pode usar este comando:

wget --mirror -pc --convert-links -P ./your-local-dir/ http://www.your-website.com

para que você obtenha o espelho exato do site que deseja baixar

baobab33
fonte
1

Este link me deu a melhor resposta:

$ wget --no-clobber --convert-links --random-wait -r -p --level 1 -E -e robots=off -U mozilla http://base.site/dir/

Funcionou como um encanto.

Nelinton Medeiros
fonte
-1

Isso funciona:

wget -m -np -c --no-check-certificate -R "index.html*" "https://the-eye.eu/public/AudioBooks/Edgar%20Allan%20Poe%20-%2"
Hiep Luong
fonte