Come scaricare un'intera directory e sottodirectory usando wget?


143

Sto cercando di scaricare i file per un progetto utilizzando wget, poiché il server SVN per quel progetto non è più in esecuzione e sono in grado di accedere ai file solo tramite un browser. Gli URL di base per tutti i file sono gli stessi

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

Come posso usare wget(o qualsiasi altro strumento simile) per scaricare tutti i file in questo repository, dove la cartella "tzivi" è la cartella principale e ci sono diversi file e sottocartelle (fino a 2 o 3 livelli) sotto di essa?


3
Non puoi farlo se il server non ha una pagina web con l'elenco di tutti i collegamenti ai file necessari.
Eddy_Em,

1
conosci il nome dei file?
Karoly Horvath,

no non conosco il nome di tutti i file. Ho provato a wget con l'opzione ricorsiva ma non ha funzionato neanche. È perché il server non ha alcun file index.html che elenca tutti i collegamenti interni.
code4fun

Hai provato l'opzione di mirroring di wget?
Tomasz Nguyen,

Risposte:


193

Puoi usarlo nella shell:

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

I parametri sono:

-r     //recursive Download

e

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

Se non desideri scaricare l'intero contenuto, puoi utilizzare:

-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 così via. Se non si inserisce alcuna -lopzione, wgetverrà utilizzata -l 5automaticamente.

Se inserisci un, -l 0scaricherai l'intera Internet, perché wgetseguirà tutti i collegamenti che trova.


19
Fantastico, quindi per semplificare il prossimo lettore: è wget -r -l1 --no-parent http://www.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/stata la risposta per me. Grazie la tua risposta
isomorfismi

2
Ho provato il comando sopra per ottenere tutti i file http://websitename.com/wp-content/uploads/2009/05ma ho ottenuto solo un index.htmlfile che non aveva nulla. Non riesco a capire cosa mi sono perso.
Vivek Todi,

@up: Nota che wget segue i collegamenti, quindi è necessario un elenco di directory;)

11
So che è piuttosto vecchio. Ma ciò che ho anche trovato utile è stato l' -e robots=offinterruttore. ;)
Matthias W.

2
Perché non rimuovi "Ho dimenticato qualcosa di importante" e risolvi semplicemente la risposta ???
user1271772

16

Puoi usarlo in una shell:

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

I parametri sono:

-r recursively download

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

--cut-dirs=X (cuts out X directories)



1

puoi anche usare questo comando:

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

in modo da ottenere il mirror esatto del sito Web che si desidera scaricare


1

Questo link mi ha appena dato la risposta migliore:

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

Ha funzionato come un fascino.


-1

Questo funziona:

wget -m -np -c --no-check-certificate -R "index.html*" "https://the-eye.eu/public/AudioBooks/Edgar%20Allan%20Poe%20-%2"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.