Ik heb een webdirectory waarin ik enkele configuratiebestanden opsla. Ik zou wget willen gebruiken om die bestanden naar beneden te halen en hun huidige structuur te behouden. De externe map ziet er bijvoorbeeld als volgt uit:
http://mysite.com/configs/.vim/
.vim bevat meerdere bestanden en mappen. Ik wil dat op de cliënt repliceren gebruikend wget. Ik kan de juiste combinatie van wget-vlaggen niet vinden om dit voor elkaar te krijgen. Enig idee?
Antwoord 1, autoriteit 100%
U moet de optie -np
/--no-parent
doorgeven aan wget
(naast -R
/--recursive
, natuurlijk), anders volgt het de link in de directory-index op mijn site naar de bovenliggende directory. Het commando ziet er dus als volgt uit:
wget --recursive --no-parent http://example.com/configs/.vim/
Om te voorkomen dat u de automatisch gegenereerde index.html
-bestanden downloadt, gebruikt u de optie -R
/--reject
:
wget -r -np -R "index.html*" http://example.com/configs/.vim/
Antwoord 2, autoriteit 12%
Om recursief een map te downloaden die index.html*-bestanden en downloads weigert zonder de hostnaam, de bovenliggende map en de hele mapstructuur:
wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data
Antwoord 3, autoriteit 11%
voor iemand anders die vergelijkbare problemen heeft. Wget volgt robots.txt
die u misschien niet toestaat om de site te pakken. Geen zorgen, je kunt het uitschakelen:
wget -e robots=off http://www.example.com/
http://www.gnu.org/software/wget/manual/html_node /Robot-exclusion.html
Antwoord 4, Autoriteit 4%
U moet de Vlag -M (Mirror) moeten gebruiken, omdat dat zorgt voor het niet knoeien met tijdstempels en om voor onbepaalde tijd terug te keren.
wget -m http://example.com/configs/.vim/
Als u de punten die door anderen in deze thread voegt, zou het zijn:
wget -m -e robots=off --no-parent http://example.com/configs/.vim/
Antwoord 5, Autoriteit 4%
Hier is de complete wget-opdracht die voor mij heeft gewerkt om bestanden te downloaden van de directory van een server (negeren van 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/
Antwoord 6
Indien --no-parent
Niet Help, kunt u --include
optie.
Directorystruct:
http://<host>/downloads/good
http://<host>/downloads/bad
En u wilt downloads/good
Maar niet downloads/bad
Directory:
wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good
Antwoord 7
wget -r http://mysite.com/configs/.vim/
werkt voor mij.
Misschien heb je een .wgetrc die het verstoort?
Antwoord 8
Gebruik het volgende commando om recursief een directory op te halen met gebruikersnaam en wachtwoord:
wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/
Antwoord 9
Deze versie downloadt recursief en maakt geen bovenliggende mappen.
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"
}
Gebruik:
- Toevoegen aan
~/.bashrc
of plakken in terminal wgetod "http://example.com/x/"
Antwoord 10
Alles wat je nodig hebt zijn twee vlaggen, één is "-r"
voor recursie en "--no-parent"
(of -np
) om niet in de '.'
en ".."
te gaan. Zoals dit:
wget -r --no-parent http://example.com/configs/.vim/
Dat is het. Het wordt gedownload naar de volgende lokale boomstructuur: ./example.com/configs/.vim
.
Als u echter de eerste twee mappen niet wilt, gebruik dan de extra vlag --cut-dirs=2
zoals gesuggereerd in eerdere antwoorden:
wget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/
En het zal uw bestandsstructuur alleen downloaden naar ./.vim/
In feite kreeg ik de eerste regel van dit antwoord precies van de wget handleiding, ze hebben een heel duidelijk voorbeeld aan het einde van sectie 4.3.
Antwoord 11
De volgende optie lijkt de perfecte combinatie te zijn bij recursieve download:
wget -nd -np -P /dest/dir –recursive http://url/dir1/dir2
Relevante fragmenten van man-pagina’s voor het gemak:
-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.
Antwoord 12
Wget 1.18 werkt mogelijk beter, ik ben bijvoorbeeld gebeten door een bug in versie 1.12 waarbij…
wget --recursive (...)
…haalt alleen index.html op in plaats van alle bestanden.
Tussenoplossing was om enkele 301-omleidingen op te merken en de nieuwe locatie te proberen – gezien de nieuwe URL kreeg wget alle bestanden in de map.
Antwoord 13
Allereerst bedankt aan iedereen die zijn antwoorden heeft gepost. Hier is mijn “ultieme” wget-script om een website recursief te downloaden:
wget --recursive ${comment# self-explanatory} \
--no-parent ${comment# will not crawl links in folders above the base of the URL} \
--convert-links ${comment# convert links with the domain name to relative and uncrawled to absolute} \
--random-wait --wait 3 --no-http-keep-alive ${comment# do not get banned} \
--no-host-directories ${comment# do not create folders with the domain name} \
--execute robots=off --user-agent=Mozilla/5.0 ${comment# I AM A HUMAN!!!} \
--level=inf --accept '*' ${comment# do not limit to 5 levels or common file formats} \
--reject="index.html*" ${comment# use this option if you need an exact mirror} \
--cut-dirs=0 ${comment# replace 0 with the number of folders in the path, 0 for the whole domain} \
$URL
Nadien, Strippen van de query-params van URL’s zoals main.css?crc=12324567
en het uitvoeren van een lokale server (bijv. Via python3 -m http.server
in het dir je bent gewoon af) om JS te draaien kan nodig zijn. Houd er rekening mee dat de --convert-links
OPTIEKENTSICHTINGEN ALLEEN NA DE PULTUE CRAWH TOEPASSEREN.
Als u ook probeert een website te wekken die binnenkort naar beneden kan gaan, moet u Neem contact op met de ArchivEteam en vraag ze om uw website aan hun archiefbot-wachtrij toe te voegen.
Antwoord 14
U moet het eenvoudig kunnen doen door een -r
toe te voegen
wget -r http://stackoverflow.com/
Antwoord 15
recursief wget negeren robots (voor websites)
wget -e robots=off -r -np --page-requisites --convert-links 'http://example.com/folder/'
-e robots=off zorgt ervoor dat het robots.txt voor dat domein negeert
-r maakt het recursief
-np = geen ouders, dus het volgt geen links naar de bovenliggende map