WGET(1) | GNU Wget | WGET(1) |
NAZWA¶
wget - Podręcznik GNU Wget
SKŁADNIA¶
wget [opcja]... [URL]...
OPIS¶
GNU Wget jest darmowym programem narzędziowym do pobierania plików z World Wide Web. Obsługuje protokoły HTTP, HTTPS i FTP, a także pobieranie poprzez serwery proxy HTTP.
Wget potrafi podążać za odnośnikami zawartymi w stronach HMTL i tworzyć lokalne wersje zdalnych witryn WWW, w pełni odtwarzając strukturę katalogów oryginalnego ośrodka. Jest to czasami nazywane ,,pobieraniem rekurencyjnym''. Podczas takiego działania Wget respektuje ustalenia Standardu Robot Exclusion (/robots.txt). Możliwe jest poinstruowanie programu, by w pobieranych plikach HTML przekształcał odnośniki tak, aby wskazywały na lokalne kopie, do przeglądania bez połączenia.
Wget został zaprojektowany tak, by działać solidnie również przy powolnych bądź niestabilnych połączeniach. Jeżeli pobieranie nie udaje się z powodu problemów z siecią, ponawia próby aż do ściągnięcia całości pliku. Jeśli dany serwer obsługuje taką możliwość, Wget nakaże kontynuację pobierania od miejsca, w którym przerwano.
OPCJE¶
Podstawowe opcje uruchamiania
- -V
-
- --version
- Wyświetla wersję Wget.
- -h
-
- --help
- Wypisuje komunikat pomocy, opisujący wszystkie opcje, jakie
można przekazać Wget w wierszu poleceń.
- -b
-
- --background
- Przechodzi w tło natychmiast po rozpoczęciu pracy.
Jeśli nie podano pliku wyjściowego za pomocą
-o, wyjście jest przekierowywane do wget-log.
- -e polecenie
-
- --execute polecenie
- Wykonuje polecenie tak, jakby było
częścią .wgetrc. Polecenie wywołane w
ten sposób zostanie wykonane po poleceniach z
.wgetrc, więc będzie mieć nad nimi priorytet.
Opcje dziennika i pliku wejściowego
- -o dziennik
-
- --output-file=dziennik
- Rejestruje wszystkie komunikaty w pliku dziennika. Normalnie
są zgłaszane na standardowym wyjściu
błędów.
- -a dziennik
-
- --append-output=dziennik
- Dodaje komunikaty na końcu pliku dziennika. Jest to to samo,
co -o, tyle że dopisuje do dziennika zamiast
nadpisywać stary. Jeśli plik dziennik nie istnieje,
jest tworzony.
- -d
-
- --debug
- Włącza wyjście diagnostyczne, czyli wypisywanie
rozmaitych informacji ważnych dla twórców Wget, gdy
nie działa on poprawnie. Administrator twojego systemu
mógł skopilować Wget bez obsługi trybu
usuwania błędów, wówczas -d nie
będzie działać. Należy zauważyć,
że kompilacja z obsługą diagnostyki jest zawsze
bezpieczna -- Wget skompilowany w ten sposób nie
będzie wypisywał żadnych informacji diagnostycznych
dopóki nie zażądamy tego opcją -d.
- -q
-
- --quiet
- Tryb cichy. Wyłącza wyjście Wget.
- -v
-
- --verbose
- Pełne wyjście, z wszystkimi dostępnymi danymi. Jest
to opcja domyślna.
- -nv
-
- --non-verbose
- Niepełne wyjście -- wyłącza pełne
wyjście, ale nie ucisza całkowicie (to robi się
opcją -q); komunikaty o błędach i podstawowe
informacje będą nadal wypisywane.
- -i plik
-
- --input-file=plik
- Czyta URL-e z pliku wejściowego plik, w związku z
czym nie trzeba ich podawać w wierszu poleceń. Jeśli
URL-e podano zarówno w wierszu poleceń, jak i w pliku
wejściowym, to pierwsze zostaną pobrane pliki wymienione w
wierszu poleceń. Plik nie musi być dokumentem HTML
(ale nie przeszkadza, jeśli nim jest) -- wystarczy, że URL-e
będą po prostu kolejno spisane.
Jednakże jeśli zostanie podana opcja --force-html, to plik będzie traktowany jak dokument html. Mogą się wówczas pojawić kłopoty z odnośnikami względnymi, które można rozwiązać dodając "<base href="url">" do pliku lub podając --base=url w wierszu poleceń.
- -F
-
- --force-html
- Kiedy wejście jest czytane z pliku, wymusza aby było
traktowane jako HTML. Pozwala to na pobieranie względnych
odnośników z istniejących plików HTML
znajdujących się na lokalnym dysku naszego komputera, przez
dodanie znacznika "<base
href="url">"
do pliku HTML lub użycie opcji --base.
- -B URL
-
- --base=URL
- Użyte w połączeniu z -F, stosuje URL
jako podstawę dla odnośników względnych w
pliku podanym przez -i.
Opcje ściągania
- --bind-address=adres
- Podczas tworzenia klienckich połączeń TCP/IP,
wiąże z lokalnym komputerem, przez
"bind()", zadany adres.
Adres można podać jako nazwę hosta lub adres
IP. Może się przydać jeśli nasza maszyna ma
przypisane kilka adresów IP.
- -t liczba
-
- --tries=liczba
- Ustawia liczbę ponawiania prób na liczbę. Dla
nieskończonego ponawiania podajemy 0 lub inf.
- -O plik
-
- --output-document=plik
- Dokumenty nie będą zapisywane do odpowiednich plików,
ale wszystkie zostaną sklejone i zapisane do pliku.
Jeśli plik istnieje, to zostanie nadpisany. Jeśli
jako plik podano -, dokumenty będą zapisane na
standardowe wyjście. Włączenie tej opcji
automatycznie ustawia liczbę prób na 1.
- -nc
-
- --no-clobber
- Jeśli plik jest pobierany więcej niż raz do tego
samego katalogu, zachowanie się Wget zależy od kilku opcji,
między innymi -nc. W pewnych przypadkach istniejący
lokalny plik będzie nadpisany, przebity (ang. clobbered),
przy powtórzeniu ściągania. W innych przypadkach
zostanie zachowany.
Przy uruchomieniu Wget bez opcji -N, -nc lub -r pobranie tego samego pliku do tego samego katalogu spowoduje pozostawienie pierwotnego egzemplarza pliku i nadanie drugiemu nazwy plik.1. Gdy plik będzie ściągany kolejny raz, trzeci egzemplarz otrzyma nazwę file.2, i tak dalej. Przy podanej opcji -nc, zachowanie takie jest wstrzymywane, a Wget odmawia pobrania nowszych kopii pliku. Dlatego też, ``"no-clobber"'' jest w rzeczywistości złą nazwą dla tego trybu -- nie chroni on przed nadpisywaniem (gdyż temu zapobiegają już numeryczne przyrostki), ale przed zachowywaniem wielu wersji pliku.
Przy uruchomieniu Wget z -r, ale bez -N czy -nc, ponowne ściągnięcie pliku powoduje, że nowa kopia po prostu nadpisuje starą. Dodanie -nc zapobiega takiemu zachowaniu, skutkując zamiast tego zachowaniem pierwotnej wersji i ignorowaniem ewentualnych nowe kopii z serwera.
Przy uruchomieniu Wget z -N, z opcją -r lub bez niej, decyzja, czy ściągać nową wersję pliku czy też nie, zależy od znaczników czasu (dat modyfikacji) i rozmiarów lokalnego i zdalnego pliku. -nc nie można podawać równocześnie z -N.
Zauważ, że jeśli podano -nc, pliki z przyrostkami .html lub .htm (fuj) będą odczytywane z dysku i przetwarzane tak, jakby zostały pobrane z Sieci.
- -c
-
- --continue
- Kontynuuje pobieranie częściowo
ściągniętego pliku. Przydatne, gdy chcemy
dokończyć ściąganie rozpoczęte lub w
poprzednim przebiegu Wget lub przez inny program. Na przykład:
wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
Jeśli w bieżącym katalogu istnieje plik ls-lR.Z, Wget przyjmie, że jest to początkowy fragment zdalnego pliku i zażąda od serwera kontynuacji pobierania od offsetu równego długości lokalnego pliku.Zauważ, że nie ma potrzeby podawania tej opcji jeśli chcemy tylko, by aktualnie wywołany Wget ponownie próbował ściągać plik, w połowie którego zostało zerwane połączenie. Jest to zachowanie domyślne. Opcja -c wpływa tylko na wznawianie pobrań zaczętych przed bieżącym wywołaniem Wget i tylko dla tych plików, których lokalne kopie nadal istnieją.
Bez -c, polecenie z poprzedniego przykładu pobrałby po prostu zdalny plik do ls-lR.Z.1, pozostawiając w spokoju obcięty plik ls-lR.Z.
Począwszy od Wget 1.7, jeśli użyjemy -c dla niepustego pliku, a okaże się, że serwer nie obsługuje kontynuacji ściągania, to program odmówi rozpoczęcia ściągania od zera, które prowadziłoby do zniszczenia istniejącej zawartości. Jeśli naprawdę chcemy ściągać od początku, powinniśmy usunąć taki plik.
Również od wersji 1.7, jeśli użyjemy -c dla pliku, którego rozmiar jest taki sam, jak na serwerze, to Wget odmówi ściągnięcia pliku i wypisze komunikat objaśniający. Tak samo dzieje się, gdy plik jest mniejszy na serwerze niż lokalnie (prawdopodobnie dlatego, że został zmieniony na serwerze od czasu naszej ostatniej próby ściągania) -- ponieważ ,,kontynuacja'' jest bezsensowna, pobieranie nie zachodzi.
Z drugiej strony, przy stosowaniu -c, każdy plik, który jest większy na serwerze niż lokalnie będzie uważany za nie w pełni ściągnięty. Wówczas pobranych i doczepionych na koniec pliku lokalnego zostanie tylko "(length(zdalny) - length(lokalny))" bajtów. W pewnych przypadkach takie zachowanie jest pożądane -- na przykład, można skorzystać z wget -c do ściągnięcia tylko nowej porcji danych, dopisanej na końcu zbioru danych czy pliku dziennika.
Jednakże, jeśli plik na serwerze jest większy dlatego, że został zmieniony, a nie tylko doklejono do niego dane, to w efekcie otrzymamy zniekształcony plik. Wget w żaden sposób nie może sprawdzić, czy lokalny plik jest poprawną częścią początkową zdalnego. Należy na to szczególnie uważać stosując -c w połączeniu z -r, gdyż każdy plik będzie uważany za kandydata na "nieukończone ściąganie".
Inną sytuacja, w której przy korzystaniu z -c uzyskuje się zniekształcony plik, zachodzi, gdy mamy do czynienia z ułomnym proxy HTTP, wstawiającym łańcuch ,,transfer interrupted'' do lokalnego pliku. W przyszłości będzie może dodana opcja ,,rollback'', obsługująca ten przypadek.
Zauważ, że -c działa tylko z serwerami FTP i HTTP, które obsługują nagłówek "Range".
- --progress=typ
- Umożliwia wskazanie typu wskaźnika postępu.
Dozwolonymi rodzajami wskaźnika są ,,dot'' (kropka) i
,,bar'' (pasek).
Domyślnie stosowany jest wskaźnik ,,bar''. Rysowany jest wówczas pasek postępu złożony ze znaków graficznych ASCII (zwany czasem wskaźnikiem ,,termometrowym''), wskazujący stan pobierania. Jeżeli wyjściem programu nie jest TTY, to domyślnie zostanie użyty wskaźnik typu ,,dot''.
W celu przełączenia na wyświetlanie kropek należy użyć --progress=dot. Postępy ściągania pokazują wtedy wypisywane na ekranie kropki, z których każda symbolizuje ustaloną ilość pobranych danych.
Przy korzystaniu z tego wskaźnika, można także ustalić styl. Wykonuje się to podając typ wskaźnika w postaci dot:styl. W różnych stylach pojedynczej kropce przypisuje się różne znaczenie. W stylu "default" każda kropka oznacza 1K, grupa liczy dziesięć kropek, a wiersz 50 kropek. Styl "binary" jest bardziej ,,komputerowy'' -- 8K dla skropki, 16-kropkowe grupy i 48 kropek w wierszu (co daje 384K na wiersz). Przy pobieraniu bardzo dużych plików odpowiedni jest styl "mega" -- każda kropka symbolizuje pobrane 64K, w grupie jest osiem kropek, a w wierszu 48 (więc każdy wiersz zawiera 3M).
Warto zauważyć, że domyślny rodzaj wskaźnika postępu możemy ustalić umieszczając w pliku .wgetrc polecenie "progress". Takie ustawienie jest przesłaniane przez opcję podaną w wierszu poleceń. Wyjątek stanowi sytuacja, kiedy wyjściem nie jest TTY -- wówczas typ ,,dot'' będzie miał pierwszeństwo nad ,,bar''. Da się jednak wymusić wskaźnik w postaci paska, stosując --progress=bar:force.
- -N
-
- --timestamping
- Włącza stosowanie znaczników czasu (time-stamping).
- -S
-
- --server-response
- Wypisuje nagłówki wysyłane przez serwery HTTP i
odpowiedzi wysyłane przez serwery FTP.
- --spider
- Wywołąny z tą opcją, Wget będzie
zachowywał się jak sieciowy pająk (Web
spider), to znaczy, że nie będzie pobierał stron, a
jedynie sprawdzał, czy tam są. Można to
wykorzystać to sprawdzenia zakładek (bookmarks), na
przykład tak:
wget --spider --force-html -i bookmarks.html
Ta funkcja wymaga jeszcze wiele pracy, by Wget osiągnął możliwości zbliżone do prawdziwych pająków WWW.
- -T seconds
-
- --timeout=sekundy
- Ustawia limit czasu czytania na podaną liczbę sekund.
Przy każdym odczycie sieciowym sprawdzana jest dla deskryptora
pliku ewentualność przekroczenia limitu czasu,
ponieważ bez tego mogło by dojść do
nieprzerwanego czytania (zostawienia zawieszonego
połączenia). Domyślny limit to 900 sekund
(piętnaście minut). Ustawienie limitu na 0
wyłącza sprawdzanie.
Proszę nie obniżać domyślnej wartości limitu czasu tą opcją, chyba że z pełną świadomością skutków.
- --limit-rate=wielkość
- Ogranicza prędkości pobierania do
wielkość bajtów na sekundę.
Wielkość tę można wyrazić w bajtach,
kilobajtach (przyrostkiem k) lub megabajtach (przyrostkiem
m) na sekundę. Na przykład --limit-rate=20k
ograniczy prędkość ściągania do 20KB/s.
Taka rzecz przydaje się, gdy z jakiegoś powodu nie chcemy,
żeby Wget zajął całą
dostępną szerokość pasma.
Należy zauważyć, że Wget realizuje to w ten sposób, że po stwierdzeniu, iż odczyt z sieci zabrał mniej czasu, niż wynika to z podanej prędkości, przez odpowiedni czas wstrzymuje się od działania (zasypia). Końcowym efektem takiej strategii jest spowolnienie transferu TCP mniej więcej do podanej prędkości. Niemniej jednak, na osiągnięcie tej równowagi potrzeba trochę czasu, więc nie bądźcie zaskoczeni, jeśli ograniczenie szybkości nie działa dla bardzo małych plików. Tak samo, strategia "zasypiania" nie zda egzaminu, jeśli poda się zbyt małe pasmo, dajmy na to mniejsze niż 1,5KB/s.
- -w sekundy
-
- --wait=sekundy
- Odczekuje zadaną liczbę sekund pomiędzy kolejnymi
pobraniami. Zaleca się używanie tej opcji, gdyż
zmniejsza obciążenie serwera dzięki rzadszym
żądaniom. Czas, zamiast w sekundach, można
podać w minutach dodając przyrostek
"m", w godzinach - dodając
"h" lub w dniach - dodając
"d".
Określanie dużej wartości tej opcji przydaje się jeśli sieć lub maszyna docelowa są wyłączone. Wówczas Wget może odczekać wystarczająco długo, by rozsądnie spodziewać się, że przed ponowną próbą błąd sieci został naprawiony.
- --waitretry=sekundy
- Opcję tę stosujemy jeśli nie chcemy, by Wget
czekał pomiędzy każdym pobraniem, a tylko
pomiędzy ponawianymi próbami nieudanych pobrań. Wget
zastosuje odczekiwanie liniowe (linear backoff),
czekając 1 sekundę po pierwszym niepowodzeniu z danym
plikiem, następnie 2 sekundy po drugim niepowodzeniu z tym plikiem,
aż do maksymalnej liczby sekund, jaką podano. Zatem,
wartość 10 faktycznie spowoduje, że Wget
będzie odczekiwał łącznie do (1 + 2 + ... +
10) = 55 sekund na każdy plik.
Zauważ, że w ogólnosystemowym pliku wgetrc ta opcja jest domyślnie włączona.
- --random-wait
- W niektórych z ośrodków wykonywana jest analiza
plików dziennikowych (tzw. logów), która ma na celu
zidentyfikowanie programów do pobierania, takich jak Wget. Polega
ona na wyszukiwaniu statystycznie znaczących podobieństw
między różnicami czasu, jaki
upłynął pomiędzy kolejnymi
żądaniami. Ta opcja powoduje, że dla zamaskowania
przed takimi analizami obecności Wgeta czas pomiędzy
żądaniami będzie się wahać od 0 do 2 *
sekundy, gdzie sekundy podano opcją --wait
(-w).
W jednym z ostatnich artykułów w pewnej publikacji poświęconej rozwijaniu oprogramowania na popularnych platformach klienckich podano kod wykonujący taką analizę na bieżąco. Autor sugerował blokowanie na poziomie adresu klasy C, co ma gwarantować, że programy pobierające zostaną zablokowane niezależnie od zmiany adresów przedzielanych przez DHCP.
Opcja --random-wait powstała z powodu tej właśnie nierozważnej porady, zalecającej blokowanie wielu postronnych użytkowników ośrodka z powodu działań jednego z nich.
- -Y on/off
-
- --proxy=on/off
- Włącza/wyłącza używanie proxy.
Domyślnie używanie proxy jest włączone
jeśli jest zdefiniowana odpowiednia zmienna środowiskowa.
- -Q wielkość
-
- --quota=wielkość
- Określa ograniczenie wielkości pobieranych danych przy
ściąganiu automatycznym. Limit podawany jest w bajtach
(domyślnie), kilobajtach (z przyrostkiem k) lub megabajtach
(z przyrostkiem m).
Warto pamiętać, że ograniczenie to nigdy nie dotyczy pobierania pojedynczego pliku. Tak więc, jeśli podamy wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz, to zostanie ściągnięty cały plik ls-lR.gz. Tak samo dzieje się nawet wówczas, gdy w wierszu poleceń zostanie wyszczególnionych kilka URL-i. Ograniczenie wielkości jest jednak przestrzegane podczas pobierania rekurencyjnego lub według pliku wejściowego. Zatem, można spokojnie napisać wget -Q2m -i witryny -- po przekroczeniu ograniczenia ściąganie zostanie przerwane.
Ustawienie limitu na 0 lub na inf znosi ograniczenie pobierania.
Opcje katalogów
- -nd
-
- --no-directories
- Nie tworzy hierarchii katalogów przy pobieraniu rekurencyjnym. Po
włączeniu tej opcji wszystkie pliki będą
zapisywane do bieżącego katalogu bez przebijania
(jeśli nazwa pojawi się więcej niż raz, nazwy
plików otrzymają rozszerzenie .n).
- -x
-
- --force-directories
- Przeciwieństwo -nd. Wymusza utworzenie hierarchii
katalogów nawet jeśli nie miałaby być
stworzona. Np. wget -x http://fly.srk.fer.hr/robots.txt zapisze
ściągnięty plik jako
fly.srk.fer.hr/robots.txt.
- -nH
-
- --no-host-directories
- Wyłącza tworzenie katalogów z nazwą hosta jako
przedrostkiem. Domyślnie, -r http://fly.srk.fer.hr/
spowoduje stworzenie struktury katalogów zaczynającej
się od fly.srk.fer.hr/, gdzie trafi cała reszta. Ta
opcja wyłącza takie zachowanie.
- --cut-dirs=liczba
- Ignoruje podaną liczbę składowych katalogu.
Przydatne do precyzyjnego sterowania katalogami, w których
będą składowane pliki z pobierania rekurencyjnego.
Weźmy, na przykład, katalog ftp://ftp.xemacs.org/pub/xemacs/. Jeżeli pobierzemy go z -r, to lokalnie zostanie zachowany jako ftp.xemacs.org/pub/xemacs/. Mimo że opcja -nH pozwala na usunięcie części ftp.xemacs.org/, nadal utkniemy z pub/xemacs. Tu właśnie z pomocą przychodzi --cut-dirs. Powoduje, że Wget ``nie widzi'' zadanej liczby składowych zdalnego katalogu. Oto kilka przykładów pokazujących, jak działa opcja --cut-dirs.
No options -> ftp.xemacs.org/pub/xemacs/ -nH -> pub/xemacs/ -nH --cut-dirs=1 -> xemacs/ -nH --cut-dirs=2 -> .
--cut-dirs=1 -> ftp.xemacs.org/xemacs/ ...
Jeśli chcemy po prostu pozbyć się struktury katalogów, to opcja ta jest podobna do kombinacji -nd i -P. Jednak --cut-dirs, w przeciwieństwie do -nd, nie pozbywa się podkatalogów -- na przykład, przy -nH --cut-dirs=1, podkatalog beta/ będzie, zgodnie z oczekiwaniami, umieszczony w xemacs/beta.
- -P prefiks
-
- --directory-prefix=prefiks
- Ustawia przedrostek, prefiks katalogów na prefiks.
Przedrostek katalogów oznacza katalog, zostaną
zapisane wszystkie inne pliki i katalogi, tzn. wierzchołek drzewa
pobierania. Domyślnym przedrostkiem jest ., katalog
bieżący.
Opcje HTTP
- -E
-
- --html-extension
- Jeśli pobierany jest plik typu text/html a jego URL nie
kończy się wyrażeniem regularnym
\.[Hh][Tt][Mm][Ll]?, to opcja ta spowoduje dodanie przyrostka
.html do lokalnej nazwy pliku. Przydatne, na przykład, gdy
tworzymy kopię lustrzaną witryny, która używa
stron .asp, ale chcemy, by pozyskane strony dawały
się przeglądać za pomocą własnego
serwera Apache. Innym dobrym zastosowaniem jest pobieranie wyjścia
generowanego przez skrypty CGI. URL typu
http://site.com/article.cgi?25 zostanie zachowany jako
article.cgi?25.html.
Zauważ, że pliki o zmienionych w ten sposób nazwach będą ponownie pobierane za każdym razem gdy będziemy odświeżać kopię lustrzaną witryny. Dzieje się tak, ponieważ Wget nie potrafi stwierdzić, że lokalny plik X.html odpowiada zdalnemu URL-owi X (gdyż nie wie, że ten URL tworzy wyjście typu text/html). Chcąc uniknąć ponownego pobierania, trzeba użyć -k i -K, tak by oryginalna wersja pliku została zachowana jako X.orig.
- --http-user=użytkownik
-
- --http-passwd=hasło
- Określają nazwę użytkownika i hasło,
które Wget prześle serwerowi HTTP. W
zależności od rodzaju protokołu
wezwanie-odpowiedź, Wget koduje je stosując albo
uwierzytelnianie podstawowe ("basic",
niechronione) albo w oparciu o skrót
("digest").
Inną metodę podania nazwy i hasła użytkownika jest wyszczególnienie ich w samym URL-u. Obie te metody ujawniają hasło każdemu, kto zechce uruchomić "ps". Żeby uchronić hasła przed podpatrzeniem, należy przechowywać je w pliku .wgetrc lub .netrc i, za pomocą "chmod", zapewnić tym plikom ochronę przed innymi użytkownikami. Jeżeli hasła są naprawdę ważne, w tych plikach też nie trzymajcie ich na stałe -- usuńcie je z plików zaraz po rozpoczęciu przez Wgeta pobierania. Dokładniejsze omówienie kwestii bezpieczeństwa w pracy z Wget,
- -C on/off
-
- --cache=on/off
- Jeśli ustawione na off, wyłącza buforowanie po
stronie serwera. W takim przypadku Wget wysyła zdalnemu serwerowi
odpowiednią komendę (Pragma: no-cache), dzięki
której plik zostanie pobrany z usługi zdalnej, a nie
zwrócona wersja buforowana. Jest to szczególnie przydatne do
pobierania i wymiatania przeterminowanych dokumentów z
serwerów proxy.
Domyślnie, buforowanie jest dozwolone.
- Ustawione na off wyłącza używanie ciasteczek
(cookies). Ciasteczka są mechanizmem do przechowywania stanu po
stronie serwera. Serwer przesyła klientowi ciasteczko
stosując nagłówek
"Set-Cookie", a klient przy
późniejszych żądaniach odpowiada tym samym
ciasteczkiem. Ponieważ ciasteczka umożliwiają
właścicielom serwera prowadzenie rejestrów
gości i wymianę się tymi informacjami z innymi
ośrodkami, niektórzy uważają je za
pogwałcenie prywatności. Domyślnie cookies są
używane, jednak ich zapisywanie nie jest domyślnie
włączone.
- Przed pierwszym pobraniem HTTP wczytuje ciasteczka z pliku.
Pliku jest plikiem tekstowym w formacie, jaki pierwotnie
zastosowano dla pliku cookies.txt przeglądarki Netscape.
Na ogół korzysta się z tej opcji przy tworzeniu kopii lustrzanych tych ośrodków, które do skorzystania z części lub całości zasobów wymagają zalogowania się. Proces logowania się zwykle polega na tym, że po otrzymaniu od nas informacji uwierzytelniającej i jej zweryfikowaniu serwer WWW wysyła ciasteczko HTTP. Następnie, gdy przeglądarka sięga do zasobów, odsyła serwerowi otrzymane ciasteczko, potwierdzając w ten sposób naszą tożsamość.
Utworzenie kopii tego rodzaju witryny wymaga wysyłania przez Wget takich samych ciasteczek, jakie podczas komunikowania się z tym ośrodkiem przesyła nasza przeglądarka. Osiąga się to za pomocą --load-cookies -- wystarczy wskazać programowi lokalizację pliku cookies.txt, a on wyśle te same ciasteczka, które w tej samej sytuacji wysłałaby przyglądarka.
Różne przeglądarki trzymają tekstowe pliki ciasteczek w różnych miejscach:
- Netscape 4.x
- Ciasteczka są w ~/.netscape/cookies.txt.
- Mozilla i Netscape 6.x
- Plik ciasteczek Mozilli nazywa się również
cookies.txt, jest położony gdzieś w
~/.mozilla, w katalogu właściwym dla profilu
użytkownika. Pełna ścieżka zazwyczaj
kończy się czymś w rodzaju
~/.mozilla/default/coś-dziwnego/cookies.txt.
- Internet Explorer
- Ciasteczko, jakiego mógłby użyć Wget,
można utworzyć korzystając z menu "Plik" i
opcji "Importuj i Eksportuj", "Eksportuj pliki
cookie". Zostało to przetestowane z Internet Explorerem 5 --
nie ma gwarancji, że będzie działać z
wcześniejszymi wersjami.
- inne przeglądarki
- Jeżeli do tworzenia ciasteczek korzystacie z innej przeglądarki, --load-cookies będzie działać tylko wtedy, gdy uda wam się zlokalizować lub utworzyć plik ciasteczek w formacie Netscape, jakiego oczekuje Wget.
Jeśli nie możecie skorzystać z --load-cookies, jest jeszcze inna możliwość. Jeśli używana przez was przeglądarka udostępnia ,,menedżera plików cookie'', skorzystajcie z niego, żeby podglądnąć ciasteczka, jakie zostały wykorzystane podczas uzyskiwania dostępu do witryny, której kopię chcecie utworzyć. Zapiszcie nazwę i wartość ciasteczka, a następnie ręcznie nakażcie Wgetowi wysłanie ciasteczka o zadanej postaci, obchodząc równocześnie ,,oficjalny'' kodu odpowiedzialny za obsługę ciasteczek:
wget --cookies=off --header "Cookie: I<nazwa>=I<wartość>"
- Na koniec sesji zapisuje ciasteczka do pliku. Ciasteczka, dla
których nie określono daty ważności lub
które już wygasły, nie są zapisywane.
- --ignore-length
- Niestety, niektóre serwery HTTP (dokładniej
mówiąc, programy CGI) wysyłają
błędne nagłówki
"Content-Length", co powoduje, że
Wget głupieje, sądząc, że nie została
pobrana całość dokumentu. Syndrom ten można
uchwycić, gdy Wget próbuje w kółko
pobierać ten sam dokument, za każdym razem twierdząc,
że (inaczej niż zwykle) połączenie
zostało zamknięte na dokładnie tym samym bajcie.
Wywołany z tą opcją, Wget będzie ignorował nagłówek "Content-Length", tak jakby nie istniał.
- --header=dodatkowy-nagłówek
- Określa dodatkowy-nagłówek przesyłany
serwerom HTTP. Nagłówki muszą zawierać
: poprzedzony co najmniej jednym niepustym znakiem, i nie
mogą zawierać znaków nowej linii.
Możliwe jest określenie więcej niż jednego dodatkowego nagłówka przez kilkakrotne podanie opcji --header.
wget --header='Accept-Charset: iso-8859-2' \ --header='Accept-Language: hr' \ http://fly.srk.fer.hr/
Podanie pustego łańcucha jako nagłówka kasuje wszystkie uprzednio zdefiniowane przez użytkownika nagłówki.
- --proxy-user=użytkownik
-
- --proxy-passwd=hasło
- Określają nazwę użytkownika i hasło,
które zostaną użyte do uwierzytelniania na serwerze
proxy. Wget koduje je stosując podstawowy
("basic") schemat uwierzytelniania.
Odnoszą się do tego podobne zagadnienia związane z bezpieczeństwem, jak w przypadku opcji --http-passwd.
- --referer=url
- Zamieszcza nagłówek `Referer: url' w
żądaniu HTTP. Przydatne do pobierania dokumentów z
takim przetwarzaniem po stronie serwera, które zakłada,
że są one zawsze pobierane przez interaktywne
przeglądarki Sieci i uznawane za poprawne tylko wtedy, gdy Refer
jest ustawione na jedną ze stron, które na nie
wskazują.
- -s
-
- --save-headers
- Zapisuje nagłówki wysyłane przez serwer HTTP do
pliku, przed właściwą zawartością, z
pustą linią jako separatorem.
- -U nazwa-agenta
-
- --user-agent=nazwa-agenta
- Serwerowi HTTP przedstawia się jako agent o podanej nazwie.
Protokół HTTP pozwala klientom na podanie, za pomocą pola "User-Agent" nagłówka, swojej tożsamości. Umożliwia to rozróżnianie oprogramowania WWW, zwykle do celów statystycznych lub śledzenia naruszeń protokołu. Wget normalnie przedstawia się jako Wget/wersja, gdzie wersja jest aktualnym numerem wersji programu.
Znane są jednak pewne witryny narzucające politykę przykrawania wyników stosownie do informacji dostarczonej im w polu "User-Agent". Mimo iż koncepcyjnie nie jest to taki zły pomysł, zaczął być nadużywany przez serwery odmawiające informacji klientom innym niż "Mozilla" lub "Internet Explorer". Ta opcja umożliwia zmianę linii "User-Agent" wysyłanej przez Wget. Nie zachęcamy do używania tej opcji, chyba że z pełną świadomością.
Opcje FTP
- -nr
-
- --dont-remove-listing
- Zakazuje usuwania tymczasowych plików .listing generowanych
przez odczyty FTP. Normalnie, pliki te zawierają nieprzetworzone
listingi katalogów otrzymane z serwerów FTP. Pozostawienie
ich może się przydać do celów diagnostycznych
lub łatwego sprawdzenia zawartości katalogów zdalnego
serwera (np. do sprawdzenia, że tworzona kopia lustrzana jest
kompletna).
Zauważ, że, mimo iż Wget zapisuje w tym przypadku do pliku o znanej nazwie, nie jest to dziura w zabezpieczeniach w sytuacji, gdy użytkownik stworzy .listing jako dowiązanie symboliczne do /etc/passwd czy innego pliku i poprosi superużytkownika ("root") o uruchomienie Wget w tym katalogu. W zależności od użytych opcji, Wget albo odmówi zapisu do .listing (co spowoduje niepowodzenie operacji na maskach, rekurencyjnej czy zależnej od znaczników czasu), albo dowiązanie symboliczne zostanie usunięte i zastąpione faktycznym plikiem .listing, albo też listing zostanie zapisany do pliku .listing.numer.
Choć ta sytuacja nie stwarza kłopotów, jednak "root" nie powinien nigdy uruchamiać Wget w katalogu niezaufanego użytkownika. Użytkownik taki mógłby na przykład dowiązać index.html do /etc/passwd i poprosić "root"a o uruchomienie Wget z opcjami -N lub -r, tak że plik ten zostałby nadpisany.
- --retr-symlinks
- Zwykle, gdy podczas rekurencyjnego pobierania katalogów FTP
napotkane zostanie dowiązanie symboliczne, to wskazywany przez nie
plik nie jest ściągany. Zamiast tego w lokalnym systemie
plików tworzone jest odpowiadające mu dowiązanie
symboliczne. Wskazywany przez dowiązanie plik nie zostanie
ściągnięty, chyba że pobieranie rekurencyjne
natknie się nań osobno i tak czy owak
ściągnie.
Przy podanej opcji --retr-symlinks, jednakże, program podąża za dowiązaniami symbolicznymi i pobiera wskazywane przez nie pliki. Obecnie opcja ta nie spowoduje, by Wget podążał za dowiązaniami do katalogów i przetwarzał je rekurencyjnie, ale w przyszłości powinna zostać poszerzona tak, by tak się działo.
Zauważ, że przy pobieraniu pliku (nie katalogu) wynikającym z podania go w wierszu poleceń, a nie jako w następstwie rekurencji, opcja ta nie działa. W tym przypadku Wget zawsze podąża za dowiązaniami.
- -g on/off
-
- --glob=on/off
- Włącza/wyłącza obsługę masek dla
FTP. Obsługa masek oznacza, że można
używać znaków specjalnych,
uogólniających (jokerów), takich jak *,
?, [ i ], do pobrania większej liczby
plików z tego samego katalogu naraz, np.
wget ftp://gnjilux.srk.fer.hr/*.msg
Domyślnie obsługa masek będzie włączona jeśli URL zawiera znaki uogólniające. Tej opcji można użyć do włączenia bądź wyłączenia obsługi masek na stałe.Może zajść potrzeba ujęcia URL-a w znaki cudzysłowu, by uchronić go przed rozwinięciem przez powłokę. Obsługa masek powoduje, że Wget oczekuje listingu katalogu, którego postać jest zależna od systemu. Z tego powodu obecnie działa tylko z uniksowymi serwerami FTP (i z tymi, które potrafią emulować wyjście uniksowego "ls").
- --passive-ftp
- Powoduje korzystanie z pasywnego schematu pobierania FTP, w
którym klient inicjuje połączenie do
przesyłania danych. Jest on czasem wymagany, by FTP
działał za zaporami ogniowymi.
Opcje pobierania rekurencyjnego
- -r
-
- --recursive
- Włącza pobieranie rekurencyjne.
- -l głębokość
-
- --level=głębokość
- Podaje maksymalny poziom głębokości rekurencji.
Domyślnie jest to 5.
- --delete-after
- Ta opcja nakazuje Wget usunięcie każdego z plików,
jaki pobiera, po wykonaniu ściągania. Jest przydatna
do pobierania wstępnego (prefetching) popularnych stron poprzez
proxy, np.:
wget -r -nd --delete-after http://whatever.com/~popular/page/
Opcja -r nakazuje pobieranie rekurencyjne, a -nd nietworzenie katalogów.Zauważ, że --delete-after usuwa pliki z lokalnego komputera. Nie wydaje polecenia DELE, na przykład zdalnym ośrodkom FTP. Zauważ też, że jeśli podano --delete-after, to --convert-links jest ignorowane, więc przede wszystkim pliki .orig po prostu nie są tworzone.
- -k
-
- --convert-links
- Po zakończeniu pobierania konwertuje odnośniki w dokumencie
tak, by nadawały się do lokalnego przeglądania.
Dotyczy to nie tylko widzialnych odnośników hipertekstowych,
ale każdej części dokumentu, która prowadzi do
zewnętrznych materiałów, jak osadzone obrazki,
odnośniki do arkuszy stylów, odnośniki hipertekstowe
do zawartości innej niż HTML, itp.
Każdy odnośnik będzie zmieniony na jeden z dwu sposobów:
- Odnośniki do plików, które zostały
ściągnięte przez Wget zostaną zmienione tak,
by odwoływały się do pliku, na jaki wskazują,
jako odnośniki względne.
Przykład: jeśli ściągnięty plik /foo/doc.html jest powiązany z z /bar/img.gif, również ściągniętym, to odnośnik w doc.html zostanie zmieniony tak, by wskazywał na ../bar/img.gif. Ten rodzaj przekształcenia działa bezproblemowo dla dowolnej kombinacji katalogów.
- Odnośniki do plików, które nie zostały
ściągnięte przez Wget zostaną zmienione tak,
by zawierały nazwę hosta i ścieżkę
bezwzględną miejsca, na które wskazują.
Przykład: jeśli ściągnięty plik /foo/doc.html jest powiązany z z /bar/img.gif (lub z ../bar/img.gif), to odnośnik w doc.html zostanie zmieniony tak, by wskazywał na http://hostname/bar/img.gif.
Z tego powodu, przeglądanie lokalne działa niezawodnie: jeśli powiązany plik był ściągnięty, to odnośnik wskazuje na jego lokalną nazwę, jeśli nie był -- to na pełny adres internetowy, a nie pojawia się popsuty odnośnik. Konwersja pierwotnych odnośników na odnośniki względne zapewnia nam możliwość przesuwania pobranej hierarchii katalogów do innego katalogu.
Zauważ, że dopiero na samym końcu pobierania Wget może rozpoznać, które odnośniki zostały ściągnięte. Z tego powodu, opcja -k wykonuje swoją pracę po zakończeniu wszystkich pobrań.
- -K
-
- --backup-converted
- Podczas konwersji pliku zachowuje kopię zapasową pierwotnej
wersji z przyrostkiem .orig. Wpływa na zachowanie opcji
-N.
- -m
-
- --mirror
- Włącza opcje odpowiednie do tworzenia kopii lustrzanych. Ta
opcja włącza rekurencję, stosowanie znaczników
czasu, ustawia nieograniczony poziom rekurencji i zachowuje listingi
katalogów FTP. Obecnie jest równoważna użyciu
-r -N -l inf -nr.
- -nr
-
- --dont-remove-listing
- Zakazuje usuwania plików tymczasowych .listing tworzonych
przez odczyty FTP. Normalnie, pliki te zawierają nieprzetworzone
listingi katalogów otrzymane z serwerów FTP. Pozostawienie
ich daje dostęp do pełnej listy zdalnych plików przy
prowadzeniu siedziby lustrzanej. Przydaje się też do
celów diagnostycznych.
- -p
-
- --page-requisites
- Ta opcja powoduje, że Wget ściągnie wszystkie pliki
niezbędne do poprawnego wyświetlenia danej strony HTML.
Obejmuje to takie rzeczy jak grafikę, dźwięki i
powiązane arkusze stylów.
Przy zwykłym trybie pracy, podczas pobierania pojedynczej strony HTML, ewentualne powiązane dokumenty, które mogą być potrzebne do poprawnego jej wyświetlenia, nie są pobierane. Pomóc może użycie opcji -r z -l, ale ponieważ Wget normalnie nie odróżnia dokumentów zewnętrznych od włączonych, na ogół pozostaje się z ,,oskubanymi dokumentami'', którym brakuje potrzebnych elementów towarzyszących.
Na przykład, powiedzmy, że dokument 1.html zawiera znacznik "<IMG>" odnoszący się do 1.gif i znacznik "<A>" wskazujący na zewnętrzny dokument 2.html. Powiedzmy, że 2.html jest podobny, tyle, że jego obrazkiem jest 2.gif a odnośnik wskazuje na 3.html. Załóżmy, że kontynuujemy takie zależności aż do jakiejś dowolnie dużej liczby.
Jeśli wykona się polecenie:
wget -r -l 2 http://I<ośrodek>/1.html
to zostaną pobrane 1.html, 1.gif, 2.html, 2.gif i 3.html. Jak widać, 3.html nie posiada towarzyszącego mu elementu, gdyż Wget w celu określenia miejsca, gdzie powinien przerwać rekurencję po prostu zlicza liczbę skoków (aż do 2) od początkowego 1.html. Jednak przy takim poleceniu:wget -r -l 2 -p http://I<ośrodek>/1.html
zostaną ściągnięte wszystkie powyższe pliki oraz wymagany przez 3.html plik 3.gif. Podobnie,wget -r -l 1 -p http://I<ośrodek>/1.html
spowoduje pobranie 1.html, 1.gif, 2.html i 2.gif. Można by sądzić, że:wget -r -l 0 -p http://I<ośrodek>/1.html
pobrałoby tylko 1.html i 1.gif, ale niestety tak nie jest, gdyż -l 0 jest równoważnikiem -l inf -- czyli nieskończonej rekurencji. Do pobrania pojedynczej strony HTML (lub ich grupy, wszystkich podanych w wierszu poleceń lub w pliku wejściowym URL-i -i) i towarzyszących jej (lub im) elementów, wystarczy pominąć -r i -l:wget -p http://I<ośrodek>/1.html
Zauważ, że Wget zachowa się tak, jakby podano opcję -r, ale zostanie pobrana tylko pojedyncza strona i jej elementy. Program nie będzie podążał za odnośnikami z tej strony do zewnętrznych dokumentów. Faktycznie, do ściągania pojedynczej strony i wszystkich towarzyszących jej elementów (nawet jeśli leżą one na odrębnych serwerach WWW) i upewnienia się, że całość lokalnie poprawnie się wyświetla, autor oprócz -p korzysta z kilku dodatkowych opcji:wget -E -H -k -K -p http://I<ośrodek>/I<dokument>
Kończąc ten temat, warto wiedzieć, że Wget uważa za odnośnik do dokumentu zewnętrznego każdy URL podany w znaczniku "<A>", "<AREA>" lub "<LINK>", oprócz "<LINK REL="stylesheet">".
Opcje rekurencyjnego akceptowania/odrzucania
- -A lista_akc --accept lista_akc
-
- -R lista_odrz --reject lista_odrz
- Podaje listę oddzielonych przecinkami przyrostków nazw
plików (rozszerzeń plików) lub wzorców nazw,
jakie mają być akceptowane lub odrzucane..
- -D lista_domen
-
- --domains=lista_domen
- Ustala domeny, do których program może przechodzić.
lista_domen jest listą separowaną przecinkami.
Zauważ, że ta opcja nie włącza
-H.
- --exclude-domains lista_domen
- Podaje domeny, do których program ma nie
przechodzić..
- --follow-ftp
- Podąża za odnośnikami FTP z dokumentów HTTP.
Bez tej opcji Wget będzie ignorował wszelkie
odnośniki do FTP.
- Wget ma wewnętrzną tablicę par: znacznik
HTML/atrybut, którą posługuje się przy
poszukiwaniu powiązanych dokumentów podczas pobierania
rekurencyjnego. Jeśli jednak chcielibyśmy, by brany
był pod uwagę tylko pewien podzbiór tych
znaczników, powinniśmy użyć tej opcji,
podając je w postaci listy separowanej przecinkami.
- -G lista
-
- Jest to przeciwieństwo opcji --follow-tags. Dzięki
podaniu listy rozdzielonych przecinkami znaczników HTML
można pominąć je podczas rekurencyjnego szukania
dokumentów do pobrania.
Niegdyś opcja -G, użyta w wierszu poleceń:
wget -Ga,area -H -k -K -r http://I<ośrodek>/I<dokument>
była najlepszym wyborem do ściągania pojedynczej strony razem z jej elementami.Jednak autor tej opcji przeszedł przez stronę ze znacznikami typu "<LINK REL="home" HREF="/">" i uświadomił sobie, że -G nie wystarcza. Nie można po prostu nakazać Wget ignorowania "<LINK>", gdyż wówczas nie będą ściągane arkusze stylów. Obecnie najlepszym sposobem pobierania pojedynczej stony razem z jej elementami jest specjalnie przeznaczona do tego opcja --page-requisites.
- -H
-
- --span-hosts
- Włącza przechodzenie pomiędzy hostami przy pobieraniu
rekurencyjnym.
- -L
-
- --relative
- Podąża tylko za odnośnikami względnymi.
Przydatne do pobierania konkretnej strony bez żadnych
odwracających uwagę dodatków, nawet z tego samego
hosta..
- -I lista
-
- --include-directories=lista
- Określa listę rozdzielonych przecinkami
katalogów, do których ma przechodzić program podczas
pobierania Elementy listy mogą zawierać znaki
uogólniające.
- -X lista
-
- --exclude-directories=lista
- Określa listę rozdzielonych przecinkami
katalogów, które chcemy wykluczyć z pobierania
Elementy listy mogą zawierać znaki
uogólniające.
- -np
-
- --no-parent
- Powoduje, że Wget przy pobieraniu rekurencyjnym nigdy nie wchodzi do katalogu nadrzędnego. Przydatna opcja, gdyż gwarantuje, że ściągane będą tylko pliki poniżej pewnego poziomu.
PRZYKŁADY¶
Przykłady podzielono na trzy części, z
grubsza według stopnia komplikacji.
Proste zastosowania
- Powiedzmy, że chcemy ściągnąć
jakiś URL. Wystarczy napisać:
wget http://fly.srk.fer.hr/
- Ale co się stanie, jeśli łącze jest powolne, a
plik długi? Połączenie prawdopodobnie zawiedzie zanim
zostanie pobrany cały plik. W takiej sytuacji Wget będzie
usiłował pobrać plik dopóki nie
ściągnie całego albo nie przekroczy domyślnej
liczby ponawiań (wynoszącą 20). Można
łatwo zmienić liczbę prób na 45, by
upewnić się, że cały plik dotrze bezpiecznie:
wget --tries=45 http://fly.srk.fer.hr/jpg/flyweb.jpg
- A teraz pozostawmy program Wget pracujący w tle i zapisujący
informacje o postępach ściągania do pliku dziennika
log. Wpisywanie --tries jest męczące,
więc użyjemy -t:
wget -t 45 -o log http://fly.srk.fer.hr/jpg/flyweb.jpg &
Znak "&" na końcu linijki zapewnia, że Wget będzie działać w tle. Ograniczenie liczby ponawiań można zlikwidować stosując -t inf.
- Sposób użycia FTP jest równie prosty. Wget zajmie
się nazwą zgłoszeniową (login) i
hasłem.
wget ftp://gnjilux.srk.fer.hr/welcome.msg
- Jeśli podamy katalog, to program pobierze jego listing, przetworzy
go i przekształci na HTML. Można spróbować:
wget ftp://prep.ai.mit.edu/pub/gnu/ links index.html
Zaawansowane zastosowania
- Mamy gotowy plik z listą URL-i, które chcemy pobrać?
Wystarczy skorzystać z przełącznika -i:
wget -i I<plik>
Jeśli jako nazwę pliku podamy -, to URL-e będą czytane ze standardowego wejścia.
- ! Create a five levels deep mirror image of the GNU web site, with the !
same directory structure the original has, with only one try per !
document, saving the log of the activities to gnulog:
Stworzymy sięgający pięciu poziomów obraz lustrzany witryny WWW GNU (z tą samą strukturą katalogów, jaką ma oryginał), stosując tylko jedną próbę pobierania dla każdego dokumentu i zapisując dziennik pracy do gnulog:
wget -r http://www.gnu.org/ -o gnulog
- To samo co powyżej, ale z konwersją odnośników
w plikach HTML tak, żeby wskazywały na lokalne pliki, by
można było przeglądać dokumenty off-line:
wget --convert-links -r http://www.gnu.org/ -o gnulog
- Pobranie tylko jednej strony HTML, ale z upewnieniem się, że
wszystkie elementy niezbędne do jej wyświetlenia (np.
wstawione obrazki i zewnętrzne arkusze stylu) również
zostaną pobrane. Zapewnia też, że
ściągnięta strona wskazuje na pobrane
odnośniki. Ponadto odnośniki w pobranej stronie powinny
wskazywać na pobrane kopie elementów.
wget -p --convert-links http://www.server.com/dir/strona.html
Wybrana strona HTML zostanie zapisana do www.server.com/dir/strona.html, a obrazki, arkusze stylu itd. gdzieś w katalogu www.server.com/, zależnie od tego, gdzie znajdowały się na zdalnym serwerze.
- Tak samo, jak wyżej, ale bez katalogu www.server.com/. W
gruncie rzeczy wcale nie chcę tych wszystkich przypadkowych
katalogów z serwera -- chcę po prostu zapisać
wszystkie pobrane pliki w podkatalogu download/
bieżącego katalogu.
wget -p --convert-links -nH -nd -Pdownload \ http://www.server.com/dir/strona.html
- Pobranie index.html z www.lycos.com, z pokazaniem oryginalnych,
odebranych od serwera nagłówków:
wget -S http://www.lycos.com/
- Zapisanie nagłówków serwera w pliku, zapewne do
końcowego przetwarzenia:
wget -s http://www.lycos.com/ more index.html
- Pobranie pierwszych dwu poziomów wuarchive.wustl.edu, z
zapisaniem ich do /tmp.
wget -r -l2 -P/tmp ftp://wuarchive.wustl.edu/
- Chcemy ściągnąć wszystkie GIF-y z pewnego
katalogu serwera HTTP. Próbowaliśmy wget
http://www.server.com/dir/*.gif, ale nie zadziałało, bo
pobieranie HTTP nie realizuje masek plików. W takim przypadku
stosujemy:
wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
Więcej pisaniny, ale skutek jest taki sam. -r -l1 oznacza pobieranie rekurencyjne, z maksymalną głębokością 1. --no-parent znaczy, że odwołania do katalogu nadrzędnego mają być ignorowane, a -A.gif oznacza ściąganie tylko plików GIF. Działałoby też -A "*.gif".
- Załóżmy, że byliśmy w połowie
ściągania, gdy nagle przerwano pracę Wget. Nie
chcielibyśmy teraz nadpisywać już obecnych
plików ponownie ściąganymi. Napisalibyśmy:
wget -nc -r http://www.gnu.org/
- Do zakodowania swojej nazwy użytkownika i hasła do HTTP lub
FTP używamy odpowiedniej składni URL-a.
wget ftp://hniksic:mojehaslo@unix.server.com/.emacs
Należy jednak zauważyć, że w systemach wielodostępnych taki sposob użycia jest niezalecany, ponieważ ujawnia hasło każdemu, kto spojrzy na wynik działania "ps".A może chcielibyśmy, żeby dokumenty wynikowe były kierowane na standardowe wyjście, a nie zapisywane do plików?
wget -O - http://jagor.srce.hr/ http://www.srce.hr/
Można też łączyć te dwie opcje i tworzyć potoki do pobierania dokumentów ze zdalnych list przebojów:wget -O - http://cool.list.com/ ⎪ wget --force-html -i -
Bardzo zaawansowane zastosowania
- Jeśli chcemy, by Wget utrzymywał lustrzaną
kopię strony (lub podkatalogów FTP), stosujemy
--mirror (-m), co jest skróconym zapisem dla -r -l
inf -N. Umieszczamy Wget w pliku crontab,
żądając, by w każdą niedzielę
ponawiał sprawdzanie ośrodka:
crontab 0 0 * * 0 wget --mirror http://www.gnu.org/ -o /home/ja/weeklog
- Dodatkowo można zażyczyć sobie konwersji
odnośników, tak by całość
nadawała się do przeglądania lokalnie. Jednak, po
przeczytaniu tego podręcznika, wiecie już, że taka
konwersja nie sprawuje się dobrze, gdy wykorzystujemy znaczniki
czasu, więc chcemy również, żeby Wget
utworzył kopie oryginalnych plików HTML przed ich
przekształceniem. Odpowiednie Wywołanie
wyglądałoby tak:
wget --mirror --convert-links --backup-converted \ http://www.gnu.org/ -o /home/ja/weeklog
- Ale zauważyliście też, że lokalne
przeglądanie nie działa całkiem poprawnie,
jeśli pliki HTML zapisano z innym rozszerzeniem niż
.html, na przykład dlatego, że dostarczono je jako
index.cgi. Zatem chcielibyśmy, żeby Wget wszystkim
plikom przekazanym z nagłówkiem content-type równym
text/html zmienił nazwy na nazwa.html.
wget --mirror --convert-links --backup-converted \ --html-extension -o /home/ja/weeklog \ http://www.gnu.org/
Lub też, pisząc krócej:wget -m -k -K -E http://www.gnu.org/ -o /home/me/weeklog
PLIKI¶
- /etc/wgetrc
- Domyślne położenie globalnego pliku
startowego.
- .wgetrc
- Prywatny plik startowy użytkownika.
BŁĘDY¶
Zachęcamy do przesyłania zgłoszeń błędów dotyczących GNU Wget na adres <"bug-wget@gnu.org">.
Przed faktycznym przedłożeniem zgłoszenia
błędu, spróbuj, proszę, zastosować
się do kilku prostych wskazówek.
- 1.
- Spróbuj upewnić się, że obserwowane zachowanie
jest rzeczywiście błędem. Jeśli Wget
się wywala, jest to błąd. Jeśli nie zachowuje
się zgodnie z dokumentacją, jest to błąd.
Jeśli coś działa dziwnie, ale nie jesteś
pewien, w jaki sposób powinno, może to też być
błędem.
- 2.
- Spróbuj, proszę, powtórzyć ten
błąd w możliwie najprostszych warunkach. Np.
jeśli Wget pada podczas ściągania wget -rl0 -kKE
-t5 -Y0 http://yoyodyne.com -o /tmp/log, powinieneś
spróbować sprawdzić, czy to wywalanie się jest
powtarzalne i czy pojawia się przy prostszym zestawie opcji.
Możesz nawet spróbować zacząć
pobieranie od strony, przy której wystąpiła awaria i
sprawdzić, czy to nie ta strona w jakiś sposób
ją powoduje.
Ponadto, choć co prawda prawdopodobnie będę zainteresowany zawartością twojego pliku .wgetrc, skopiowanie go po prostu do wiadomości o błędzie jest raczej złym pomysłem. Zamiast tego, powinieneś najpierw sprawdzić, czy błąd powtarza się przy .wgetrc przesuniętym na ubocze. Prześlij mi odpowiednie fragmenty tego pliku tylko wtedy, gdy okaże się, że błąd zależy od ustawień .wgetrc.
- 3.
- Uruchom, proszę, Wget z opcją -d i prześlij
uzyskany protokół (lub związane z
błędem jego części). Jeśli Wget
został skompilowany bez obsługi debugowania, skompiluj go
ponownie. Dużo łatwiej jest śledzić
błędy z udostępnioną diagnostyką.
- 4.
- jeśli Wget się wywala, spróbuj uruchomić go w debugerze, np. "gdb `which wget` core" i wpisz "where", by otrzymać stos wywołania (backtrace).
ZOBACZ TAKŻE¶
Plik GNU Info dla wget.
AUTOR¶
Pierwotnie napisane przez Hrvoje Niksic <hniksic@arsdigita.com>.
COPYRIGHT¶
Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
Zezwala się na sporządzanie i rozpowszechnianie niezmienionych kopii tego podręcznika, pod warunkiem zachowania na wszystkich kopiach informacji o prawach autorskich i niniejszego zezwolenia.
Zezwala się na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu na warunkach Licencji Wolnej Dokumentacji GNU (GNU Free Documentation License) w wersji 1.1 lub jakiejkolwiek nowszej wersji opublikowanej przez Fundację Wolnego Oprogramowania, przy czym Sekcjami niezmiennymi są ,,GNU General Public License'' i ,,GNU Free Documentation License'', bez treści przedniej lub tylnej strony okładki. Egzemplarz licencji zamieszczono w sekcji zatytułowanej ,,GNU Free Documentation License''.
GNU WGet 1.8.2 | 3rd Berkeley Distribution |