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?


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.


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)



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


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.


-1

Isso funciona:

wget -m -np -c --no-check-certificate -R "index.html*" "https://the-eye.eu/public/AudioBooks/Edgar%20Allan%20Poe%20-%2"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.