Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

📥 Kuinka ladata koko verkkosivusto Wgetillä Windowsissa

📥 Kuinka ladata koko verkkosivusto Wgetillä Windowsissa

Ilmainen komentorivityökalu Wget osaa peilata verkkosivustoja: se lataa jokaisen sivun, jokaisen kuvan, jokaisen CSS-tiedoston ja tallentaa ne kansioon levyllesi. Se kuulostaa taialta, mutta kyse on puhtaasta insinöörityöstä: rekursiivinen linkkien läpikäynti, polkujen muuntaminen suhteellisiksi URL-osoitteiksi ja rakenteen huolellinen säilyttäminen. Kun tällainen arkisto on luotu, sivusto avautuu paikallisesti aivan kuin se olisi verkossa; napsautat vain mitä tahansa .html-tiedostoa.

Ongelmana on, että kunnollisia Windows-oppaita ei juuri ole. Useimmat ohjeet on kirjoitettu Unixille, ja tavallinen Windows-käyttäjä tarvitsee valmiin .exe-tiedoston, selkeät komennot ja suojan tavallisilta sudenkuopilta, kuten äärettömältä rekursiolta tai rikkinäisiltä linkeiltä. Tämän aukon me nyt paikkaamme.

💡 Pikaopas:

  • Lataa Wget Windowsille ja lisää ohjelman polku järjestelmän PATH-muuttujaan
  • Avaa komentokehote kohdekansiossasi ja suorita peilauskomento
  • Korjaa latauksen jälkeen rikkinäiset linkit ja polut grepWinillä, ja arkisto on valmis katseltavaksi
  • Jos rekursiota ei tarvita, käytä tilaa, jossa on valmiiksi laadittu URL-lista

Miksi koko sivusto kannattaa ladata

Internet ei ole ikuinen. Sivustot sulkeutuvat, vaihtavat omistajaa, kokevat uudistuksia ja menettävät vanhaa sisältöä. Tiedon hamstrausyhteisö Redditissä on jo kauan sitten tehnyt arkistoinnista kulttuuria, ja hyvästä syystä. Et voi ennustaa, milloin lempiblogisi katoaa tai milloin arvokas dokumentaatio siirtyy maksumuurin taakse, mutta voit tallentaa sen nykyisessä muodossaan.

Käyttötapaukset vaihtelevat ilmeisistä yllättäviin. Olet lähdössä matkalle paikkaan, jossa ei ole internetyhteyttä, ja tarvitset toimivan tilannevedoksen tietosivustosta. Tai keräät suunnittelun aikakausia; eilisen verkon taulukkopohjineen ja happamanvärisine painikkeineen on jo historiaa. Jopa omaa sivustoasi kannattaa peilata säännöllisesti: kyse ei ole varmuuskopiosta perinteisessä mielessä (tietokantaa ei voi palauttaa), vaan staattisesta tilannevedoksesta, joka selviää mistä tahansa hosting-palvelun kaatumisesta.

Yksi tärkeä varoitus: ole tarkkana, mitä lataat. Tekijänoikeus- ja tietosuojalait ovat edelleen voimassa. Tallennetun kopion yksityinen käyttö on yleensä laillista, mutta jonkun toisen sisällön julkaiseminen ilman lupaa voi aiheuttaa ongelmia.

Miten Wget indeksoi sivuston: prosessin mekaniikka

Wget lähtee liikkeelle määrittämästäsi URL-osoitteesta ja seuraa rekursiivisesti jokaista sisäistä linkkiä, teoriassa äärettömään syvyyteen. Oikein määritettynä se ei karkaa avoimeen internetiin ja ala ladata Googlea: --mirror-valinta yhdistettynä --reject-regex-valintaan pitää indeksoinnin kohdedomainin rajojen sisällä. Kaikki ulkoiset linkit jäävät koskemattomiksi, pelkäksi tekstiksi alkuperäisellä URL-osoitteella.

Matkan varrella Wget nappaa kaiken: HTML-sivut, tyylitiedostot, skriptit, kuvat, fontit. Sitten se muuntaa sisäiset linkit suhteellisiksi poluiksi, minkä ansiosta arkisto avautuu paikallisesti ja navigointi toimii kuten elävällä sivustolla. Ulkoiset linkit pysyvät ennallaan ja osoittavat edelleen internetiin (jos se on käytettävissäsi katseluhetkellä).

Arkisto, ei varmuuskopio. Sivustoa ei voi palauttaa tällaisesta staattisesta kopiosta, koska siinä ei ole tietokantaa eikä palvelinlogiikkaa. Wget toimii kuten hakukoneindeksoija: se löytää vain sivut, joihin joku on linkittänyt. Prosessin aikana näet, kuinka tärkeitä sisäiset linkit ovat sisällön yhteyksien kannalta; orposivut, joihin ei ole saapuvia linkkejä, eivät päädy arkistoon.

Vaikka Wget ei ole sidottu mihinkään tiettyyn CMS:ään, se toimii erityisen hyvin WordPress-sivustojen kanssa. Syy on yksinkertainen: vakiotoiminnot, kuten avainsanapilvet ja kuukausiarkistot, luovat tiheän sisäisten linkkien verkoston, jonka botti käy läpi vaivattomasti.

Wgetin asentaminen Windowsiin

Wgetin maailma pyörii historiallisesti Unixin ympärillä, ja Windows-käyttäjät ovat täällä vieraita. Jos menet viralliselle GNU-sivustolle ja lataat lähdekoodin, saat kasan .c-tiedostoja, et valmista ohjelmaa. Tarvitset valmiiksi käännetyn binäärin:

  • Mene osoitteeseen eternallybored.org/misc/wget, joka on epävirallinen mutta ajan testaama Wgetin Windows-käännösten arkisto (nykyinen versio 1.21.4)
  • Lataa uusimman version zip-arkisto ja pura se omaan kansioonsa. Asennusta ei tarvita; kyseessä on siirrettävä apuohjelma

Jos kaksoisnapsautat wget.exe-tiedostoa, komentokehoteikkuna välähtää ja sulkeutuu heti. Wget on konsoliohjelma; se tarvitsee avoimen terminaalin kohdekansiossasi. Ja jotta .exe-tiedostoa ei tarvitse kopioida jokaiseen tulevien arkistojen kansioon, lisää Wget järjestelmän PATH-muuttujaan:

  • Paina Windows + R, liitä ja suorita:
1 "C:\Windows\system32\rundll32.exe" sysdm.cpl,EditEnvironmentVariables
  • Etsi User variables -osiosta Path-muuttuja ja napsauta Edit...
  • Napsauta New ja syötä koko polku kansioon, joka sisältää wget.exe-tiedoston
  • Sulje kaikki valintaikkunat napsauttamalla OK

Varmistus: paina uudelleen Windows + Rcmd /k "wget -V". Sinun pitäisi nähdä Wgetin versio, ei viestiä siitä, että komentoa ei tunnisteta.

Komentokehoteikkuna, jossa näkyy Wgetin versiotiedot

Tärkeimmät Wget-valitsimet: yksityiskohtainen erittely

Useimmilla valitsimilla on lyhyet yksikirjaimiset vastineet, mutta pitkät nimet ovat merkityksellisempiä ja luettavampia ilman lunttilappua. Olen valinnut käytännössä hyväksi todetut asetukset, joten 181-sivuisen GNU Wget -manuaalin lukemisen sijaan saat tiivistelmän, jossa selitetään kunkin valitsimen "miksi".

Ydinvalitsimet

--mirror sallii äärettömän rekursion. Se on käytännössä joukko muita valitsimia yhdistettynä yhden lipun alle. Ilman sitä Wget lataa vain määritetyn sivun, ei koko sivustoa. Peilaus on mahdollista nimenomaan --mirror-valitsimen ansiosta.

--page-requisites lataa kaikki liittyvät resurssit: CSS:n, JavaScriptin, kuvat, fontit. Ilman tätä valitsinta arkistosi näyttää paljaalta HTML-sivulta ilman tyylejä tai kuvia.

--convert-links kirjoittaa HTML-tiedostojen linkit uudelleen latauksen päätyttyä, jotta ne toimivat paikallisesti. Absoluuttiset URL-osoitteet korvataan suhteellisilla poluilla. Tämän ansiosta voit avata index.html-tiedoston levyltä ja selata sivuja kuten elävällä sivustolla.

--adjust-extension lisää tiedostopäätteet tiedostoihin, jotka saapuivat ilman niitä. Nykyaikaiset sivustot tarjoavat sivuja usein ilman .html-päätettä (ihmisluettavat URL-osoitteet), ja ilman tätä valitsinta selain ei ymmärrä katsovansa HTML-dokumenttia. Tässä on yksi sudenkuoppa: jos palvelin pakkaa sisältöä gzipillä, Wget saattaa antaa tiedostolle virheellisesti .gz-päätteen. Seuraava valitsin suojaa tältä.

--compression=auto käsittelee gzip-pakkauksen lennossa. Ilman sitä SVG-logo saatetaan tallentaa nimellä logo.svg.gz ja siitä tulee käyttökelvoton paikalliseen katseluun. Tämä valitsin ei ole saatavilla kaikissa käännöksissä; Unix-käyttäjät törmäävät toisinaan sen puuttumiseen. eternallybored.org-sivuston Windows-käännös sisältää sen.

--reject-regex "/search|/rss" estää annetut sanat sisältävien URL-osoitteiden läpikäynnin. Hakusivut ja RSS-syötteet tuottavat loputtomia parametriketjuja, jotka täyttävät tiedostojärjestelmäsi usean ruudun mittaisilla nimillä. Tässä käytetty säännöllinen lauseke noudattaa POSIX-perussyntaksia, ei täyttä PCRE:tä. Ole varovainen: /search katkaisee hakukanavien lisäksi myös asialliset artikkelit, joiden URL-osoite on kuten yoursite.com/search-for-extraterrestrial-life. Tällaisten törmäysten sattuessa tarkenna kaavaa.

Lisävalitsimet

--no-if-modified-since poistaa If-Modified-Since-otsakkeen tarkistuksen käytöstä. Lisään tämän lipun vain, kun palvelin valittaa lokeissa erikseen. Jos et aio ajaa komentoa uudelleen samaan kansioon muutosten poimimiseksi, tämä valitsin ei ole kriittinen.

--no-check-certificate ohittaa SSL-varmenteen tarkistuksen. Peilatessa et syötä salasanoja tai välitä luottamuksellista tietoa, joten tiukka varmenteen tarkistus on tarpeetonta. Tämä lippu säästää päänvaivalta sivustoilla, joilla on vanhentuneet tai itse allekirjoitetut varmenteet.

--user-agent väärentää selaimen User-Agentin. Jotkin palvelimet tunnistavat Wgetin ja estävät pyynnöt. Tavalliseksi Chrome-selaimeksi tekeytyminen ratkaisee ongelman:

1--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Jos esto tapahtuu IP-osoitteen perusteella, tarvitset VPN:n ja mahdollisesti latauksen jakamista usealle koneelle. Tällöin --wait- ja --random-wait-valitsimet pyyntötahdin hidastamiseksi ovat myös hyödyllisiä.

--restrict-file-names=windows rajoittaa tiedostonimien merkit Windows-yhteensopivaan joukkoon. Unixissa erikoismerkit nimissä ovat sallittuja, ja Linux-koneella ladattu arkisto voi olla lukukelvoton Windowsissa. Jos työskentelet Windowsissa, lippu otetaan käyttöön automaattisesti; jos lataat Unixissa mutta katselet Windowsissa, määritä se erikseen.

--backup-converted tallentaa alkuperäisen kopion jokaisesta tiedostosta, jota Wget muokkasi linkkien muunnoksen aikana. Tämä kaksinkertaistaa arkiston koon. En käytä sitä itse, mutta mainitsen sen siltä varalta, että tarvitset sekunnin tarkkuudella varmuuskopion jokaisesta muokkauksesta.

Komentokehotteen avaaminen oikeassa kansiossa

Wget suoritetaan päätteestä, ja päätteen on osoitettava kansioon, johon aiot tallentaa arkiston. Menetelmiä on useita, perustasosta edistyneeseen:

  • Windows + Rcmd → Enter, sitten cd /d C:\path\to\archive (/d-lippu mahdollistaa asemien välillä vaihtamisen)
  • Jos polku sisältää välilyöntejä, ympäröi se lainausmerkeillä: cd /d "C:\My Archive"

Nopeammin, yhdellä rivillä: Windows + Rcmd /k "cd /d C:\path\to\archive". /k-lippu pitää ikkunan auki komennon suorittamisen jälkeen.

Jos käytät Total Commanderia: Komennot → Avaa komentotulkki avaa päätteen suoraan nykyisessä kansiossa. Resurssienhallintaan on olemassa rekisterimuokkaus, joka lisää "Avaa komentoikkuna tässä" -vaihtoehdon kontekstivalikkoon.

Latauksen käynnistäminen: täydellinen komento

Kootaan kaikki yhteen. Tässä on komento, jota käytän keskivertosivuston peilaamiseen:

1wget --mirror --page-requisites --convert-links --adjust-extension --compression=auto --reject-regex "/search|/rss" --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" https://example.com

Sama voidaan kirjoittaa lyhyillä lipuilla: wget -mkp -E --compression=auto -R "/search|/rss" .... Mutta pitkät nimet tekevät komennosta itseään dokumentoivan. Kuukauden päästä avaat .bat-tiedostosi ja ymmärrät heti, mitä kukin valitsin tekee.

Korvaa https://example.com kohdesivuston todellisella URL-osoitteella ja paina Enter. Prosessi voi kestää muutamasta minuutista useisiin tunteihin sivuston koosta ja palvelimen rajoituksista riippuen.

Jälkikäsittely: grepWin ja tyypilliset korjaukset

Latauksen jälkeen arkisto vaatii lähes aina jonkin verran viimeistelyä. Apuohjelma grepWin on sveitsiläinen linkkuveitsi tekstiedostojen joukkohakuun ja -korvaukseen Windowsissa. Tässä pari tyypillistä skenaariota:

  • Roska-HTML-tagien poistaminen. Jotkin CMS-alustat tuottavat tyhjiä <source>-tageja, jotka häiritsevät renderöintiä. Valitse grepWinissä regex-haku kohteelle <source media=".*">, määritä maskiksi *.html ja korvaa tyhjällä merkkijonolla.

  • Resurssipolkujen korjaaminen. Jos jotkin polut jäivät absoluuttisiksi, grepWin löytää ne kaavalla kuten src="https://example.com/ ja korvaa paikallisella vastineella.

grepWin-apuohjelman ikkuna haku- ja korvausasetuksilla

Tämä on vasta lähtökohta; jokaisella sivustolla on omat yllätyksensä. grepWinin vahvuudet: välitön esikatselu ennen korvausta, rekursiivinen kansioiden käsittely ja regex-tuki. Mutta kun muokkausten määrä ylittää "etsi ja korvaa" -tason, Unix-työkalut kuten sed ja grep tarjoavat paljon enemmän joustavuutta. Windows-versiot ovat saatavilla WSL:n tai Cygwinin kautta.

Vaihtoehto: lataaminen URL-listalta ilman rekursiota

Rekursiivinen indeksointi ei aina ole sopivaa. Jos sivusto on valtava, mutta tarvitset vain tietyn valikoiman sivuja, on helpompaa laatia URL-lista ja syöttää se Wgetille --input-file-valitsimella:

1wget --input-file=links.txt --page-requisites --convert-links --adjust-extension --compression=auto --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Huomaa, että --mirror ja --reject-regex on poistettu: rekursiota ei tarvita, ja hallitset URL-listaa itse.

Miten tällainen lista kootaan? Yksi tapa on Googlen tarkennettu haku: haku site:yoursite.com "keyword phrase" palauttaa aiheeseen liittyvät indeksoidut sivut. Aseta tulokset sataan, varustaudu Chromen Copy Links -laajennuksella ja kopioi URL-osoitteet erissä tiedostoon links.txt.

Video: sivuston peilaus 5 minuutissa

Nähdäksesi koko prosessin livenä, asennuksesta valmiiseen arkistoon, katso tämä screencast:

Tekijä käy prosessin läpi alusta alkaen: Wgetin lataaminen, asetusten määrittely, komennon suorittaminen ja tuloksen avaaminen selaimessa. Suosittelen katsomista ennen ensimmäistä ajoasi; 7 minuuttia ruutuaikaa säästää tunnin debuggausta.

⁉️🤔 Usein kysytyt kysymykset

Voinko palauttaa sivuston Wget-arkistosta?

Wget-arkisto on staattinen tilannevedos: HTML:ää, CSS:ää, JS:ää ja mediatiedostoja. Se ei sisällä tietokantaa eikä palvelinlogiikkaa. Et voi ladata tällaista kopiota palvelimelle ja herättää WordPressiä henkiin kommentteineen ja hallintapaneleineen. Tämä on työkalu sisällön säilyttämiseen, ei varmuuskopiointiin. Täyteen WordPress-varmuuskopioon käytä lisäosia kuten UpdraftPlus tai Duplicator, jotka tallentavat sekä tiedostot että tietokannan.

Wget lataa liikaa roskaa. Miten rajoitan sitä?

Yhdistelmä --reject-regex (URL-suodatus kaavan mukaan) ja --reject (suodatus tiedostopäätteiden mukaan) ratkaisee ongelman. Esimerkiksi lisäämällä --reject=jpg,png,gif ohitat kaikki kuvat. Tai --reject-regex "/tag/|/category/|/page/" karsii pois tunnistearkistot, kategoriat ja sivutuksen. Avain on testata pienellä sivuotoksella ennen täyttä ajoa.

Palvelin esti IP-osoitteeni, kun aloitin lataamisen. Mitä teen?

Wget voidaan havaita User-Agentista tai pyyntötahdista. Kolme suojaustasoa: User-Agentin väärentäminen --user-agent-valitsimella (esitelty yllä), hidastaminen --wait=1 --random-wait-valitsimilla (1 sekunnin tauko plus satunnainen lisä) ja IP-osoitteen vaihto VPN:n kautta. Suurille sivustoille voit pilkkoa latauksen: valmistele useita URL-listoja ja aja Wget rinnakkain eri koneilta tai VPN-päätepisteistä.

Miksi Wget on parempi kuin selainlaajennukset sivujen tallentamiseen?

Laajennukset kuten SingleFile tallentavat yhden sivun. Wget peilaa koko sivuston navigaatioineen, sivutuksineen ja kaikkine sisäisine linkkeineen. Blogille, jossa on 500 artikkelia, selainlaajennus vaatisi 500 manuaalista klikkausta. Wget hoitaa sen yhdellä komennolla. Lisäksi selainlaajennukset eivät muunna linkkejä paikallista navigointia varten: saisit 500 eristettyä tiedostoa, joilla ei ole yhteyttä toisiinsa.

Arkisto painaa gigatavuja. Miten pakkaan ja säilytän sen?

Kansio, jossa on tuhansia pieniä tiedostoja, on hankala siirtää, varmuuskopioida ja tarkistaa virustorjunnalla. Pakkaan tällaiset arkistot RAR-muotoon käyttäen "Store"- tai "Fastest"-menetelmää: nopeus on tärkeämpää kuin pakkaussuhde, koska HTML ja media ovat jo valmiiksi pakattuja. Lisään aina palautustietueen, joka pelastaa tilanteen, kun levyllä on viallisia sektoreita tai siirtovirheitä. Lopputulos: yksi tiedosto, joka kopioituu sekunneissa eikä hajoa säilytyksessä.

Ladata vai ei: milloin Wget on vaivan arvoinen

Wget ei ole jokapäiväiseen käyttöön. Se on työkalu tiettyyn tehtävään: täydellisen staattisen kopion hankkimiseen sivustosta, josta välität tai jonka koet hyödylliseksi. Kun on riski, että resurssi katoaa, tartu Wgetiin. Kun työskentelet offline-tilassa, tartu Wgetiin. Kun haluat säilyttää "digitaalisen fossiilin" Geocitiesin ajalta, sitäkin suuremmalla syyllä.

Yksittäisille sivuille selainlaajennus riittää. Täyteen WordPress-varmuuskopioon käytä varmuuskopiointilisäosaa. Mutta kun tarvitset nimenomaan itsenäisen, selattavan arkiston koko verkkosivustosta, Wgetillä ei käytännössä ole vaihtoehtoja, ja nyt tiedät, miten ajat sen Windowsilla kivuttomasti.

Kokeile sitä pienellä tuttavan sivustolla tai omalla blogillasi. Ensimmäinen ajo selventää paljon, ja toinen sujuu jo jouhevasti. Äläkä unohda arkistosi palautustietuetta: anna kokoelmasi elää pidempään kuin yksikään kiintolevy.