Am un director web unde am stoca unele fișiere de configurare. Am'd place să folosesc wget pentru a trage aceste fișiere în jos și de a menține structura lor actuală. De exemplu, la distanță director arata ca:
http://mysite.com/configs/.vim/
.vim deține mai multe fișiere și directoare. Vreau să reproducă că pe client folosind wget. Poate't par pentru a găsi dreptul de combo de wget steaguri pentru a obține acest lucru făcut. Orice idei?
Trebuie să treacă -np
/... nu-părinte
opțiunea wget
(în plus față de -r
/--recursive
, desigur), în caz contrar acesta va urmați link-ul în directorul index pe site-ul meu la directorul părinte. Deci comanda va arata astfel:
wget --recursive --no-parent http://example.com/configs/.vim/
Pentru a evita descărcarea auto-generat index.html
de fișiere, utilizarea -R
/--reject
opțiune:
wget -r -np -R "index.html*" http://example.com/configs/.vim/
Pentru a descărca un director recursiv, care respinge index.html* fișiere și descărcări fără nume de gazdă, directorul părinte și întreaga structură de directoare :
wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data
Pentru oricine altcineva care au probleme similare. Wget cum urmează robots.txt
care ar putea să nu vă permit să apuca de site-ul. Nu vă faceți griji, puteți să-l opri:
wget -e robots=off http://www.example.com/
http://www.gnu.org/software/wget/manual/html_node/Robot-Exclusion.html
Ar trebui să utilizați -m (oglinda) de pavilion, așa că are grijă să nu te pui cu marcajele de timp și să recurse pe termen nelimitat.
wget -m http://example.com/configs/.vim/
Dacă adăugați la punctele menționate de către alții în acest thread, ar fi:
wget -m -e robots=off --no-parent http://example.com/configs/.vim/
Aici's a finaliza comanda wget care a lucrat pentru mine pentru a descărca fișiere de pe un server's director (ignorând robots.txt
):
wget -e robots=off --cut-dirs=3 --user-agent=Mozilla/5.0 --reject="index.html*" --no-parent --recursive --relative --level=1 --no-directories http://www.example.com/archive/example/5.3.0/
Dacă ... nu-părinte
nu ajuta, s-ar putea folosi --includ
opțiune.
Directorul struct:
http://<host>/downloads/good
http://<host>/downloads/bad
Și doriți să descărcați descărcări/bun, dar nu
downloads/rea` director:
wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good
Pentru a aduce un director recursiv cu numele de utilizator și parola, utilizați următoarea comandă:
wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/
Tot ce ai nevoie este de două steaguri, unul este " r" pentru recursivitate și
" - nu-părinte"(sau
-np) pentru a nu merge în
'.'și
".."` . Astfel:
wget -r-nu-părinte http://example.com/configs/.vim/
Ca's a. Se va descărca în următoarele copac locale: ./example.com/configs/.vim
.
Cu toate acestea, dacă nu doriți primele două directoare, apoi utilizați suplimentare pavilion - taie-dirs=2
cum a sugerat în mai devreme raspunsuri:
wget -r-nu-părinte ... taie-dirs=2 http://example.com/configs/.vim/
Și se va descărca fișierul dvs. copac numai în ./.vim/
De fapt, am primit prima linie de acest răspuns tocmai de la wget manual, au o foarte curate exemplu, spre sfârșitul secțiunea 4.3.
Wget 1.18 pot lucra mai bine, de exemplu, am fost muscat de o versiune 1.12 bug în cazul în care...
wget --recursive (...)
...doar preia index.html în loc de toate fișierele.
Soluție a fost de a observa unele 301 redirecționări și să încerce noua locație — având în vedere noul URL, wget are toate fișierele în directorul.
Această versiune popularitate recursiv și nu't crea părinte directoare.
wgetod() {
NSLASH="$(echo "$1" | perl -pe 's|.*://[^/]+(.*?)/?$|\1|' | grep -o / | wc -l)"
NCUT=$((NSLASH > 0 ? NSLASH-1 : 0))
wget -r -nH --user-agent=Mozilla/5.0 --cut-dirs=$NCUT --no-parent --reject="index.html*" "$1"
}
Utilizare:
wgetod "http://example.com/x/"
Următoarea opțiune pare a fi combinația perfectă atunci când se ocupă cu recursiv pentru a descărca:
wget -nd-np-P /dest/dir --recursive http://url/dir1/dir2
Relevante fragmente din paginile man pentru comoditate:
-nd
--no-directories
Do not create a hierarchy of directories when retrieving recursively. With this option turned on, all files will get saved to the current directory, without clobbering (if a name shows up more than once, the
filenames will get extensions .n).
-np
--no-parent
Do not ever ascend to the parent directory when retrieving recursively. This is a useful option, since it guarantees that only the files below a certain hierarchy will be downloaded.