2008. október 26., vasárnap

A Wget használata

wget - egy program állományok letöltésére a World Wide Web-ről
ÁTTEKINTÉS
wget [kapcsolók] [URL-lista]
FIGYELMEZTETÉS
Az itt található információk a Wget teljes dokumentációjának csak egy részét képezik. Nem naprakész. Az információs dokumentáció teljes, naprakész adatokat tartalmaz. Az információs dokumentációt az Emacs info alrendszerével vagy az info programmal lehet megtekinteni.
LEÍRÁS
Wget egy program különböző állományok bináris letöltésére a World Wide Web-ről HTTP (Hyper Text Átviteli Protokoll) és FTP (File Átviteli Protokoll) -n keresztül lemezre mentés céljára. Wget egy nem-interaktív program, amely azt jelenti, hogy a háttérben is tud dolgozni a felhasználó bejelentkezése nélkül, nem úgy, mint a legtöbb Web-böngésző (tehát a program elindítása után nyugodtan ki lehet jelentkezni, a program tovább fog működni). A szerverrel való kapcsolat alapján dönti el, hogy az állományok megfelelően kerültek-e letöltésre, és addig próbálja meg a letöltést míg az megfelelő nem lesz, vagy a felhasználó által beállított értéket el nem éri. FTP szervereknél REST módot használja, ha lehetséges. Proxy szerverek használata támogatott, hogy a letöltést gyorsítsa, a hálózat terhelését csökkentse.
Wgetegy teljes körű letöltési mechanizmust használ, amellyel a Web nagy részét le lehet letölteni, hogy a távoli gép fa struktúráját a helyi gépen hozzuk létre. Természetesen a letöltési mélységet (rekurzió) és más paramétereket meg lehet adni. A letöltött dokumentumok figyelésével biztosítja a Wget, hogy a rekurzió sohase kerüljön végtelen ciklusba. Mind HTTP, mind FTP szervereknél alkalmazható.
A letöltés folyamata könnyen nyomon követhető formában jelenik meg, pontokkal mutatva. Mindegyik pont 1k letöltött adatot jelent. Beépített funkciók segítik a letöltés finomhangolását, pl. mely hivatkozásokra (linkre) terjedjen ki a letöltés (Ld. -L, -D és -H kapcsolók).
URL ELNEVEZÉSEK
Az RFC1738 szabványban rögzített URL formák többsége használható. 2 alternatív forma megadása lehetséges a wget-ben, amely azt jelenti, hogy az alábbi módokon lehet megadni egy dokumentum helyét az Interneten:
Hagyományos URL (ajánlott forma):
http://gazdagép:[portszám]/elérésiút
http://fly.cc.fer.hr/
ftp://ftp.xemacs.org/pub/xemacs/xemacs-19.14.tar.gz
ftp://felhasználónév:jelszó@gazdagép/könyvtár/állomány
Csak FTP esetén használandó (ncftp-szerű):
gazdagép:/könyvtár/állomány
Csak HTTP esetén használandó (netscape-szerű):
gazdagép(:portszám)/könyvtár/állomány
A felhasználónév és/vagy jelszó megadása az URL-ben az alábbi módon lehetséges:
ftp://felhasználónév:jelszó@gazdagép/könyvtár/állomány
Ha a fenti formák között nem tudjuk mi a különbség, akkor nyugodtan használhatjuk a lynx vagy netscape-nél alkalmazott formákat. Az alternatív formák nem elterjedtek, ezért lehet, hogy a jövőben nem fognak működni a Wget-ben.
OPCIÓK
Pár parancssori kapcsolóval lehet a wget-et vezérelni. Nem szükséges ezek mindegyikének teljes ismerete vagy használata, ha csak nem a program alapbeállításától eltérő működést szeretnénk elérni. Egyszerű használathoz egyáltalán nem kell a különböző kapcsolókat használni. Jó tanács, hogy a gyakran használt beállításokat a .wgetrc állományban tároljuk.
A következő lista az összes kapcsolót bemutatja rövid magyarázattal csökkenő fontossági sorrendben:
-h --help
Felsorolja a lehetséges kapcsolókat. Segítséget nyújt a program használatához. Nem megfelelő vagy hiányos parancssor használatakor is megjelenik.
-V --version
Megjeleníti a Wget verziószámát.
-v --verbose
Részletes (verbose) kimenet az összes lehetséges információval. Alapesetben a kimenet csak a letöltéseket és hibaüzeneteket tartalmazza. Ha a kimenet a stdout, akkor alapértelmezett a részletes mód.
-q --quiet
Csöndes mód (quiet), a kimenet teljes hiánya.
-d --debug
Hibakereső (debug) mód. Csak akkor érhető el, ha a program a -DDEBUG opcióval lett fordítva. Ha a program fordítása így történt, akkor a kimenetben csak a -d kapcsoló megadása után jelenik meg többlet információ.
"-i állomány --input-file=állomány"
A megadott állománybólolvassa ki a szükséges URL-ket, ekkor nem szükséges a parancssorban URL-t megadni. Ha azonban mind a parancssorban, mind az állomány révén URL lett megadva, akkor először a parancssori URL kerül feldolgozásra. Az állománynak nem szükséges HTML dokumentumnak lennie (de nem gond ha az), elég ha csak egymás után felsorolva vannak az URL-ek.
Azonban, ha a -force-html kapcsolót használjuk, akkor az állományt HTML dokumentumként olvassa be. Ebben az esetben a problémát relatív hivatkozások (relativ links) okozhatják, amelyet a dokumentumban elhelyezett vagy a -base=URL kapcsoló megadásával lehet kiküszöbölni.
"-o naplóállomány --output-file=naplóállomány"
A megadott naplóállományba (logfile) írja az üzeneteket a stdout helyett. Részletes kiment kerül a naplóállományba. Ha ez nem szükséges, akkor használjuk a -nv (nem részletes, non-verbose) opciót.
"-a naplóállomány --append-output=naplóállomány"
Naplóállományhoz hozzáfűzés. Ugyanaz, mint az -o opció, csak hozzáfűzi az újabb üzeneteket a naplóállományhoz (vagy újat hoz létre, ha még nem létezik) ahelyett, hogy felülírná a régi állományt.
"-t szám --tries=szám"
A szám-ban megadott értékre állítja az újrapróbálkozások (retries) számát. 0 a végtelen sok próbálkozást jelenti.
--follow-ftp
HTML dokumentumokban található FTP hivatkozásokat is letölti.
-c --continue-ftp
FTP állományok letöltésénél ott folytatja (continuing), ahol a letöltés megszakadt. A "wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z" paranccsal ha az aktuális könyvtárban már található egy ls-lR.Z állomány, akkor a wget a lokális állomány mérete utáni részt tölti le. Nem szükséges megadni a -c kapcsolót, ha folytatni akarjuk a letöltést megszakadó kapcsolatnál, mert a wget ezt önállóan megteszi, vagyis megpróbálja folytatni a megszakadt letöltést.
Ahol használni kell ezt az opciót, az egy részben letöltött (más FTP programmal, vagy egy megállított wget-tel) állomány teljes letöltésénél.
"-g on/off --glob=on/off"
Kiegészítés (globbing) be/kikapcsolása FTP letöltéskor. Alapesetben bekapcsolódik a kiegészítés, ha az URL helyettesítő karaktereket tartalmaz (pl. csillag, kérdőjel). A kiegészítéssel több állományt lehet ugyanabból a könyvtárból letölteni egyetlen paranccsal, például ftp://gnjilux.cc.fer.hr/*.msg. A kiegészítés jelenleg csak Unix FTP szervereknél alkalmazható.
"-e parancs --execute=parancs"
A parancsban megadott dolgot hajtja végre, úgy mintha a .wgetrc állományban lett volna megadva. A parancssorban megadott parancs előbb kerül végrehajtásra, mint a .wgetrc állományban megadott, ha ott egyáltalán meg van adva.
-N --timestamping
A dátum-méretjelzés (timestamping) figyelése, hogy a program megállapítsa szükséges-e a dokumentum letöltése. Ha a távoli állomány utolsó módosításának időpontja régebbi, mint a helyi másolaté, és ha a méretük is azonos, akkor az állomány nem kerül letöltésre. Ez a kapcsoló a hetenként történő HTTP vagy FTP tükrözésekkor hasznos, mivel nem engedi meg ugyanannak a dokumentumnak az újabb letöltését, ha az nem lett megváltoztatva.
-F --force-html
Ha a bemenet egy dokumentumból történik, akkor azt HTML-dokumentumként értelmezi. Ezzel a HTML-dokumentumban megadott relatív hivatkozások letöltését lehet elvégezni, ha a szerepel a bemeneti állományban vagy a -base kapcsoló meg lett adva a parancssorban.
"-B base_href --base=base_href"
A base_href-ben megadott helyet fogja használni, mintha a bemeneti állományban szerepelt volna formában. Az állományban szereplő cím felülírja a parancssorban megadottat.
-r --recursive
Rekurzív (recursive) letöltés. Az URL protokolltól függően ez két dolgot jelent. HTTP oldalak rekurzív letöltése azt jelenti, hogy a parancssorban megadott URL-t letölti, azt HTML-dokumentumként kezeli (ha egyáltalán az) és letölti mindazokat az állományokat, amelyekre a dokumentum hivatkozott, ezt folytatja egy megadott szintig (alapesetben ez 5 szint, -l opcióval megváltoztatható). wget a HTTP szerveren található könyvtárstruktúrával azonos struktúrába tölti le a dokumentumokat.
Ez az opció bemutatóknál hasznos, ahol a lassú Internet kapcsolatot szeretnénk elkerülni. A legjobb eredményt akkor kapjuk, ha a hivatkozások relatívak, mivel így az oldalak a letöltött helyen is gond nélkül fognak működni.
FTP esetén a rekurzív letöltés a megadott könyvtár összes alkönyvtárának letöltését jelenti, hasonlóan a HTTP rekurzív letöltéséhez.
Jól meg kell gondolni a rekurzív letöltés használatát, mert az Internet kapcsolat nagy leterhelését eredményezheti. A terhelést a letöltés mélységének csökkentésével (Ld. -l) és/vagy az újrapróbálkozások számának csökkentésével (Ld. -t) lehet csökkenteni.
-m --mirror
Tükrözés (mirroring) használata. Ez a rekurzió és dátum-méretfigyelés kombinációja.
"-l szint --level=szint"
A rekurzív letöltés mélységét adja meg. Alapesetben ez 5. A megadott letöltési mélység elérésekor a letöltés visszatér a szülőkönyvtárba, és onnan megy tovább másik szálon. Így az -r -l1 használata csak egy dokumentumból történő letöltést eredményez. A letöltés mélységének 0-t megadva (elméletileg) végtelen mélységű letöltés érhető el. Jól gondoljuk meg, mert a letöltött dokumentumok száma exponenciálisan növekszik a letöltés mélységével.
-H --span-hosts
Host-ok átlépése rekurzív letöltéskor. Ld. -r és -D kapcsolók. Bővebben a HIVATKOZÁSOK KÖVETÉSE részben.
-L --relative
Csak relatív hivatkozások követése. Adott honlap letöltésekor hasznos, mivel az akár ugyanazon szerveren lévő dokumentumokat is figyelmen kívül hagyja, ha nem relatív a hivatkozás. Bővebben a HIVATKOZÁSOK KÖVETÉSE részben.
"-D tartomány-lista --domains=tartomány-lista"
A használandó és a DNS (Tartomány Név Szerver, Domain Name Server)-ben azonosított tartományok listája vesszővel elválasztva. Ez nem helyettesíti a -H kapcsolót, ha szükséges, akkor azt külön is meg kell adni. A kapcsolóval gyorsítani lehet a feldolgozást, még ha csak egy szerverre is történik az átmenet. Bővebben a HIVATKOZÁSOK KÖVETÉSE részben.
"-A lista / -R lista --accept=lista / --reject=lista"
Vesszővel felsorolt kiterjesztések, amelyek letöltése engedélyezett (Accepting) vagy nem engedélyezett (Rejecting). Például ha csak GIF és JPEG állományokat szeretnénk letölteni, akkor a -A gif,jpg,jpeg opciót használjuk. Ha viszont minden le szeretnénk tölteni a méretes MPEG és AU állományok kivételével, akkor az -R mpg,mpeg,au opciót használjuk.
"-X lista --exclude-directories lista"
Vesszővel egymás után felsorolt könyvtárak neve, amelyeket nem szeretnénk letölteni (eXclude).
"-P prefix --directory-prefix=prefix"
A letöltési állományok könyvtárát állítja be a prefix-ben megadottra (alapesetben ez "."). Az összes dokumentum és könyvtár a megadott könyvtárba kerül lementésre.
"-T szám --timeout=szám"
Várakozási idő (timeout) beállítása. Minden letöltéskor egy megadott idő van engedélyezve a dokumentum olvasásának megkezdésére, ha ez nem történne meg akkor kapcsolat továbbra is élne, de nem adna eredményt. Alapesetben a várakozási idő 900s (15 perc).
"-Y on/off --proxy=on/off"
Proxy használatának engedélyezése/tiltása. Ha a megfelelő környezeti változóban ez meg van adva, akkor automatikusan működésbe lép.
"-Q szám[KM] --quota=szám[KM]"
Letöltési kvóta (quota) megadása byte-ban (alapértelmezett), kilobyte-ban vagy megabyte-ban. Előnyösebb az rc állományban beállítani. Ld. később.
"-O állománynév --output-document=állománynév"
A dokumentumok nem a megfelelő dokumentumnévvel kerülnek lementésre, hanem az állománynév-ben megadott egyetlen állományhoz kerülnek hozzáfűzésre. Ebben az esetben az újrapróbálkozások száma automatikusan 1. Ha `-' -t adunk meg, akkor a stdout-ra kerül a kiíratás, a -quiet kapcsoló pedig be lesz kapcsolva. Óvatosan használjuk ezt a kapcsolót mivel minden hibaüzenet kiírását kikapcsolja, így nem tudjuk megfelelően ellenőrizni a wget működését.
-S --server-response
Kiírja a HTTP és/vagy FTP szerver által küldött válaszok fejlécét.
-s --save-headers
Lementi a HTTP szerver által küldött fejlécet a tényleges tartalom előtt.
"--header=additional-header"
Alternatív fejléc (header) megadása. Több eltérő fejlécet is meg lehet adni. A fejléc nem tartalmazhat CR vagy LF kódot.
--http-user --http-passwd
A HTTP szerverhez szükséges felhasználónév és jelszó magadása. Wget jelenleg csak a hagyományos authentikációs (ellenőrzési) módot kezeli.
-nc
Nem írja felül a rekurzív letöltéskor a már lementett dokumentumokat (not-clobber). Ez a kapcsoló akkor hasznos, ha egy megszakadt letöltést szeretnénk folytatni onnan, ahol megszakadt. Ekkor a .html vagy .htm dokumentumok a lemezről töltődnek be és kerülnek feldolgozásra a Web letöltés folytatásához.
-nv
Nem részletes (non-verbose) mód használata, amellyel csak a hibaüzenetek és az alapvető információk kerülnek kijelzésre. A -quiet opcióval lehet teljesen megszüntetni a kijelzést.
-nd
Rekurzív letöltéskor nem hozza létre a szükséges könyvtárstruktúrát (no-directories). Ezzel a kapcsolóval az összes dokumentum egyetlen könyvtárba kerül letöltésre felülírás nélkül (ha ugyanazon állománynév többször fordul elő, akkor .n kierjesztéssel kerül az újabb állomány lementésre).
-x
Az -nd ellentétes opciója. Könyvtárstruktúra létrehozása még akkor is, ha nem lenne szükséges a letöltésnél.
-nh
Az időt rabló DNS-azonosítás kikapcsolása minden hostra. Bővebben a HIVATKOZÁSOK KÖVETÉSE részben.
-nH
Kikapcsolja gazdagép-névvel megegyező könyvtár létrehozását (no-hostname). Alapesetben a http://fly.cc.fer.hr cím egy fly.cc.fer.hr könyvtárat fog létrehozni, ahova a dokumentumok letöltésre kerülnek. Ezzel az opcióval ezt lehet megelőzni.
--no-parent
Nem lép feljebb a szülőkönyvtárnál.
-k --convert-links
Nem relatív hivatkozások (non-relativ links) konvertálása a helyi gépen relatív hivatkozásokra.
HIVATKOZÁSOK KÖVETÉSE
A rekurzív letöltésnél meg lehet adni, hogy mely hivatkozások legyenek figyelembe véve.
Csak relatív hivatkozások
Ha csak a relatív hivatkozások kerülnek letöltésre (-L kapcsoló), akkor a rekurzív letöltés sohasem tölt le egy másik szerverről.
Néhány példa
Egyszerű letöltés (az adott állományt letölti az aktuális könyvtárba):
wget http://ftp.gnu.org/pub/gnu/emacs/emacs-21.4a.tar.gz
Tegyük fel, hogy valami miatt megszakadt a letöltésünk, és az emacs-21.4a.tar.gz állomány hiányosan található meg a gépünkön. Ekkor folytathatjuk a letöltést, ha bekapcsoljuk a -c opciót:
wget -c http://ftp.gnu.org/pub/gnu/emacs/emacs-21.4a.tar.gz
Ha egy weboldalt (pl. http://www.weitz.de/regex-coach/) szeretnénk elmenteni 1 mélységben (tehát azokat az oldalakat, amikre a weboldal hivatkozásai mutatnak, nem szeretnénk lemásolni), akkor a következőt írjuk a parancssorba:
wget -p -k http://www.weitz.de/regex-coach/
Ha ugyanezt szeretnénk megtenni, de 3 mélységig, akkor a következő a parancs:
wget -p -k -r -l3 http://www.weitz.de/regex-coach/
Az utóbbi két parancs az oldalakat a www.weitz.de/regex-coach/ könyvtárba fogja tenni. Ha azt szeretnénk, hogy mondjuk a public_html/rc könyvtárba másolja a Wget a weboldalt, akkor a -nd (nem rendezi könyvtárakba a letöltött állományokat) és a -P opciókat használjuk:
wget -p -k -r -l3 -nd -P public_html/rc http://www.weitz.de/regex-coach/
Ha a letöltendő weboldal nem HTML-dokumentum (pl. .shtml, .php, .asp, stb. kiterjesztésű), akkor a -E opció segíthet (HTML-re konvertálja a dokumentumot):
wget -p -k -E http://www.thinkgeek.com/

2 megjegyzés:

Névtelen írta...

Nem lehetne értelmesebben leírni? Nem csak kockafejek léteznek a Földön!!!

Vidám Park írta...
Ezt a megjegyzést eltávolította a szerző.