Portál AbcLinuxu, 8. května 2025 07:59

Dotaz: Stažení části souboru

15.2.2017 12:36 Martin
Stažení části souboru
Přečteno: 338×
Odpovědět | Admin
Zdravím.

Měl bych dva dotazy:

- jak pomoci wget zjistit velikost souboru, který chci stáhnout?

- lze nějakým programem (např. Wget) stáhnout pouze určitou část souboru? Třeba poslední 1 MB? Nebo třeba část začínající na 10 MB souboru a končící na 12 MB souboru?

Předem děkuji.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.2.2017 12:56 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Stažení části souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
K podobným účelům používám curl. Umí i dotáhnout zbytek částečně staženého souboru.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Blaazen avatar 15.2.2017 13:04 Blaazen | skóre: 24 | blog: BL
Rozbalit Rozbalit vše Re: Stažení části souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
wget má v --help toto:
-c,  --continue                  obnoví stahování částečně staženého souboru
     --start-pos=POZICE          začne stahovat od POZICE (počítá se od 0)
continue funguje skvěle, start-pos jsem nikdy nepoužil.
15.2.2017 21:15 Martin
Rozbalit Rozbalit vše Re: Stažení části souboru
Díky.

Parametr -c samozřejmě znám, ale mně nešlo o dokončení nedokončeného stahování.

Druhý parametr --start-pos vypadá zajímavě. Existuje i nějaký parametr --stop, kterým bych určil konec stahování? Nebo lze ve wget určit rozsah stahování, tak jak to umí curl (viz příspěvek níže) ?

Bohužel se ke svému počítači dostanu nejdříve zítra večer, takže Vaše návrhy nemohu ozkoušet hned a ani si k jednotlivým příkazům nemohu prohlédnout man stránky.

Díky moc.
Řešení 1× (Ruža Becelin)
15.2.2017 14:21 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Stažení části souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Velikost souboru můžete zjistit tak, že místo GET požadavku pošlete HEAD a přečtete si ji z hlavičky Content-Length (pokud ji server uvádí). wget na to má přepínač --method. Počáteční pozici můžete určit přes parametr --start-pos. Kdybyste chtěl určit rozsah, musel byste ručně poslat hlavičku Range.

S curl se metoda HEAD vyvolá parametrem -I/--head, rozsah dat ke stažení můžete určit rovnou parametrem -r/--range.
15.2.2017 21:01 Martin
Rozbalit Rozbalit vše Re: Stažení části souboru
Děkuji Zítra ozkouším
15.2.2017 21:25 Martin
Rozbalit Rozbalit vše Re: Stažení části souboru
Teď si Vaši odpověď pročítám ještě jednou (bohužel z MT, takže jsem jí předtím nepřečetl správně....)

Mohl byste mi prosím poradit, jak přesně ve wget poslat ručně hlavičku Range, abych mohl stanovit potřebný rozsah?

Díky moc.
15.2.2017 21:55 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Stažení části souboru
16.2.2017 07:28 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Stažení části souboru
Hlavičku předáte wgetu pomocí parametru --header. Přesný popis hlavičky si můžete najít v RFC, které odkázal Michal Kubeček. Například pokud chcete stáhnout bajty 100 až 400, zavoláte:
wget --header='Range: bytes=100-400' <URL>
Záleží ale na tom, zda server tu hlavičku podporuje (v odpovědi by měl v takovém případě vracet hlavičku Accept-Ranges).
16.2.2017 11:34 Martin
Rozbalit Rozbalit vše Re: Stažení části souboru
Díky za vyčerpávající odpověď.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.