Wie lade ich ein ganzes Verzeichnis und Unterverzeichnisse mit wget herunter?

143

Ich versuche, die Dateien für ein Projekt mit herunterzuladen wget, da der SVN-Server für dieses Projekt nicht mehr ausgeführt wird und ich nur über einen Browser auf die Dateien zugreifen kann. Die Basis-URLs für alle Dateien sind identisch

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

Wie kann ich wget(oder ein ähnliches Tool) verwenden, um alle Dateien in diesem Repository herunterzuladen, wobei der Ordner "tzivi" der Stammordner ist und sich mehrere Dateien und Unterordner (bis zu 2 oder 3 Ebenen) darunter befinden?

code4fun
quelle
3
Sie können dies nicht tun, wenn der Server keine Webseite mit einer Liste aller Links zu Dateien hat, die Sie benötigen.
Eddy_Em
1
Kennen Sie den Namen der Dateien?
Karoly Horvath
Nein, ich kenne nicht den Namen aller Dateien. Ich habe versucht, wget mit der rekursiven Option zu verwenden, aber es hat auch nicht funktioniert. Ist das so, weil der Server keine index.html-Datei hat, in der alle inneren Links aufgelistet sind.
Code4fun
Haben Sie die Spiegelungsoption von wget ausprobiert?
Tomasz Nguyen

Antworten:

193

Sie können dies in der Shell verwenden:

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

Die Parameter sind:

-r     //recursive Download

und

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

Wenn Sie nicht den gesamten Inhalt herunterladen möchten, können Sie Folgendes verwenden:

-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')  

Und so weiter. Wenn Sie keine -lOption einfügen , wgetwird diese -l 5automatisch verwendet.

Wenn Sie ein -l 0einfügen, laden Sie das gesamte Internet herunter, da wgetes jedem gefundenen Link folgt.


quelle
19
Großartig, um es für den nächsten Leser zu vereinfachen: wget -r -l1 --no-parent http://www.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/war die Antwort für mich. Danke deine Antwort.
Isomorphismen
2
Ich habe den obigen Befehl versucht, um alle Dateien abzurufen, http://websitename.com/wp-content/uploads/2009/05aber alles, was ich bekam, war eine index.htmlDatei, die nichts hatte. Ich kann mir nicht vorstellen, was ich verpasst habe.
Vivek Todi
@up: Beachten Sie, dass wget Links folgt, so dass Sie eine Verzeichnisliste benötigen;)
11
Ich weiß, dass das ziemlich alt ist. Was ich aber auch nützlich fand, war der -e robots=offWechsel. ;)
Matthias W.
2
Warum entfernst du nicht das "Ich habe etwas Wichtiges vergessen" und korrigierst einfach die Antwort ???
user1271772
16

Sie können dies in einer Shell verwenden:

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

Die Parameter sind:

-r recursively download

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

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

Verwenden Sie den Befehl

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

Sie können diesen Befehl auch verwenden:

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

Damit Sie den genauen Spiegel der Website erhalten, die Sie herunterladen möchten

baobab33
quelle
1

Dieser Link gab mir nur die beste Antwort:

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

Lief wie am Schnürchen.

Nelinton Medeiros
quelle
-1

Das funktioniert:

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