Jak pobrać cały katalog i podkatalogi za pomocą wget?


143

Próbuję pobrać pliki do projektu przy użyciu wget, ponieważ serwer SVN dla tego projektu już nie działa i mam dostęp do plików tylko przez przeglądarkę. Podstawowe adresy URL dla wszystkich plików są takie same

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

Jak mogę użyć wget(lub innego podobnego narzędzia) do pobrania wszystkich plików w tym repozytorium, gdzie folder „tzivi” jest folderem głównym, a pod nim znajduje się kilka plików i podfolderów (do 2 lub 3 poziomów)?


3
Nie możesz tego zrobić, jeśli serwer nie ma strony internetowej z listą wszystkich linków do plików, których potrzebujesz.
Eddy_Em

1
czy znasz nazwy plików?
Karoly Horvath

nie, nie znam nazw wszystkich plików. Próbowałem wget z opcją rekurencyjną, ale to też nie zadziałało, ponieważ serwer nie ma żadnego pliku index.html, który zawiera listę wszystkich linków wewnętrznych.
code4fun

Czy wypróbowałeś opcję dublowania wget?
Tomasz Nguyen

Odpowiedzi:


193

Możesz użyć tego w powłoce:

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

Parametry to:

-r     //recursive Download

i

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

Jeśli nie chcesz pobierać całej zawartości, możesz użyć:

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

I tak dalej. Jeśli wstawisz nr-l opcji, wgetużyje -l 5automatycznie.

Jeśli wstawisz a, -l 0pobierzesz cały Internet, ponieważ wgetpodążysz za każdym znalezionym łączem.


19
Świetnie, więc upraszczając dla następnego czytelnika: wget -r -l1 --no-parent http://www.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/była odpowiedź dla mnie. Dziękuję za odpowiedź.
izomorfizmy

2
Wypróbowałem powyższe polecenie, aby pobrać wszystkie pliki, http://websitename.com/wp-content/uploads/2009/05ale otrzymałem tylko index.htmlplik, który nie miał nic. Nie wiem, co przegapiłem.
Vivek Todi,

@up: Zauważ, że wget podąża za linkami, więc potrzebujesz listy katalogów;)

11
Wiem, że to dość stare. Ale przydał mi się również -e robots=offprzełącznik. ;)
Matthias W.

2
Dlaczego nie usuniesz komunikatu „Zapomniałem o czymś ważnym” i po prostu nie poprawisz odpowiedzi ???
user1271772

16

Możesz użyć tego w powłoce:

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

Parametry to:

-r recursively download

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

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



1

możesz również użyć tego polecenia:

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

tak, aby uzyskać dokładne lustro witryny, którą chcesz pobrać


1

Ten link właśnie dał mi najlepszą odpowiedź:

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

Działał jak urok.


-1

To działa:

wget -m -np -c --no-check-certificate -R "index.html*" "https://the-eye.eu/public/AudioBooks/Edgar%20Allan%20Poe%20-%2"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.