wget

Pobiera pliki z sieci przez HTTP/HTTPS/FTP, obsługuje rekurencję i wznawianie.

wget to nieinteraktywny pobieracz plików z sieci. Podajesz mu adres, a on ściąga zawartość przez HTTP, HTTPS lub FTP — bez okna przeglądarki, bez klikania, wprost z terminala albo ze skryptu. Nadaje się do jednorazowego pobrania pliku, wznawiania przerwanych transferów, ściągania w tle przez SSH, a nawet do zassania całego drzewa strony rekurencyjnie. Jest praktycznie na każdym Linuksie i działa tam, gdzie przeglądarka nie ma czego szukać (crontab, serwer bez GUI, provisioning maszyny).

Składnia i najważniejsze opcje

Podstawowa forma jest banalna: wget [opcje] URL

  • -O plik — zapisuje pobraną treść pod wskazaną nazwą (wielkie „O”, nie zero). -O - wypluwa wynik na standardowe wyjście.
  • -c — wznawia częściowo pobrany plik. Działa tylko, gdy serwer wspiera nagłówek Range (większość HTTP i FTP tak, ale nie wszystkie).
  • -r — pobieranie rekurencyjne: wget podąża za linkami i ściąga całe drzewo. Domyślna głębokość to 5 poziomów.
  • -P katalog — wskazuje katalog docelowy zamiast bieżącego.
  • -b — puszcza pobieranie w tle; log ląduje w wget-log.
  • --limit-rate=200k — ogranicza prędkość, żeby nie zapchać łącza.
  • -e polecenie — wykonuje komendę wgetrc inline, np. -e use_proxy=off wyłącza proxy dla tego wywołania.
  • -U "nazwa" — podmienia User-Agent, gdy serwer odrzuca domyślne Wget/….

Przykłady użycia

  • wget https://example.com/plik.iso — zwykłe pobranie do bieżącego katalogu.
  • wget -c https://example.com/duzy.iso — wznawia zerwane pobieranie tam, gdzie się urwało, zamiast zaczynać od zera.
  • wget -O lista.html https://example.com/ — zapisuje stronę pod własną nazwą, ignorując tę z URL-a.
  • wget -r -l 2 -np https://example.com/docs/ — ściąga docs rekurencyjnie na 2 poziomy, a -np pilnuje, żeby nie wyszedł do katalogu wyżej.
  • wget -b --limit-rate=500k https://example.com/backup.tar.gz — pobiera w tle z ograniczoną prędkością; postęp śledzisz w wget-log.

Częste błędy i pułapki

Mylenie -O z -o: wielkie -O to plik wyjściowy z danymi, małe -o to plik logu. Pomyłka nadpisze Ci log danymi albo odwrotnie.

-c nie jest magiczne: jeśli serwer nie obsługuje Range, wget pobierze plik od nowa, a nie dokończy. Łączenie -c z -r jest ryzykowne — każdy plik traktuje jako „niedokończony” i potrafi narobić bałaganu.

Rekurencja bez hamulców: samo -r na dużej stronie potrafi ściągać godzinami i zejść na obce domeny. Dodawaj -l (głębokość) i -np, a do zewnętrznych domen świadomie -H.

Certyfikaty i proxy: przy problemach z HTTPS ludzie odruchowo sięgają po --no-check-certificate — to wyłącza weryfikację TLS, więc używaj tylko świadomie. Na maszynie za firmowym proxy przydaje się -e use_proxy=off, gdy chcesz je pominąć.

Powiązane komendy: curl (bardziej elastyczny do API i nietypowych żądań), aria2c (pobieranie wielowątkowe), scp i rsync (transfer między maszynami).