Portál AbcLinuxu, 6. května 2024 05:35

Jigdo a Bittorrent

26. 5. 2003 | Robert Krátký
Články - Jigdo a Bittorrent  

Jigdo: Jak chytře stahovat a aktualizovat (nejen) ISO image. Bittorrent: P2P sdílení souborů dovedené k dokonalosti.

JIGsaw DOwnload

JIGsaw DOwnload by se volně mohlo přeložit jako skládankové stahování. Tento systém má svůj původ ve snaze usnadnit a zefektivnit způsob získávání nových nebo aktualizovaných ISO image souborů s distribucí Debian. Ačkoliv i jiné linuxové distribuce (nebo operační systémy) využívají možnosti distribuce svého produktu pomocí internetu a ISO souborů, situace u Debianu je v několika ohledech specifická. Především Debian nemá žádné komerční zázemí, a proto je zaopatření byť i jediného serveru, který by byl ochoten hostit tuto distribuci, zcela závislé na libovůli jiných subjektů. K tomu se přidává skutečnost, že Debian je nejen největší linuxovou distribucí, ale zároveň podporuje bezkonkurenčně nejvyšší počet hardwarových platforem.

Počítejte se mnou: 11 podporovanych procesorových architektur + 1 x zdrojové kódy, vynásobíme 7 (počet CD - ISO image pro většinu platforem). Tedy 12*7*650 = 54,6 GB. Bez uzardění můžeme zaokrouhlit na 55 GB, protože některé platformy (včetně IA32 - i386) obsahují osmé doplňkové CD. Těchto úctyhodných 55 GB vynásobíme nejprve dvěma a dostaneme prostor potřebný k uložení jednotlivých balíčků spolu s ISO obrazy. A nakonec ještě jeden násobek, chceme-li připočíst DVD image. Skončili jsme na 165 GB dat, což je opravdu velikost, pro kterou se vysokorychlostní mirrory shánějí velmi těžko.

Podobná matematika vedla Richarda Atterera k práci na systému jigdo. Co tedy jigdo umí?

Jak to funguje?

Jigdo umožňuje uživateli získat ISO (a jakékoliv jiné) soubory ze sítě, aniž by je bylo třeba stahovat - a tedy mít na serveru - jako jeden soubor. V praxi to znamená, že ačkoliv uživatel stahuje jednotlivé soubory, výsledkem bude plnohodnotný ISO soubor, který je připraven k vypálení. To samo o sobě ještě není nijak výjimečné, protože nástroje schopné rozdělení jednoho velkého souboru na více menších a následného poskládání částí zpět dohromady, již existují dlouho. Jedinečnost jigdo spočívá ve schopnosti sestavit definovaný obsáhlý datový soubor z libovolných dostupných souborů, přičemž jedinou podmínkou je korektní kontrolní výpočet md5sum. Z toho vyplývá, že přestože je možné využít jigdo ke stahování čehokoliv, nejlépe se uplatní právě v případě ISO souborů nebo archívů, které v sobě obsahují množství i jinde přístupných souborů.

Serverům, které hostí danou distribuci, tedy stačí poskytovat ke stažení pouze jednotlivé balíčky a speciální definiční jigdo soubory. Odpadá tím zbytečné plýtvání místem a konektivitou, které jinde padá na hlavu právě obrovských ISO obrazů.

Princip funkce

Na počátku celého procesu je klasický ISO image, který necháme zpracovat programem ze sady jigdo (jigdo-file). Tento nástroj nejprve vytvoří seznam všech souborů, které ISO obsahuje, a pak tento seznam porovná s dostupnými soubory nacházejícími se v zadané cestě. Mohou nastat tři situace:

Z pohledu uživatele

Jedinou podmínkou pro úspěšné stažení požadovaného (ISO) souboru je (kromě funkční instalace programu jigdo) nalezení vhodného .jigdo souboru. Ideální je samozřejmě využít takový, který není fyzicky příliš vzdálen. Nicméně není třeba se obávat, že by v opačném případě jigdo stahovalo z velkých dálek. Po spuštění si program řekne o zadání mirroru, takže si můžete určit, odkud až budou data putovat (na Debianu vám jigdo rovnou nabídne zdroj, který si přečte v /etc/apt/sources.list)

Pokud používáte Debian, nainstalujte si jigdo z unstable, protože vzhledem k rychlému vývoji programu by mohly mít starší verze problémy se stahováním některých .jigdo souborů (především z distribucí Sarge a Sid).

V případě jiných linuxových distribucí bude nejoptimálnější zkompilovat program z čerstvého zdrojáku. K dispozici je však i verze pro Windows a Solaris.

Takže po spuštění jigdo-lite bez jakýchkoliv parametrů budete nejprve dotázání na adresu .jigdo souboru a pak také, zda-li nemáte nějakou starší verzi stahovaného ISO souboru (vypálenou na CD nebo namountovanou jako loopback zařízení). Pokud máte, jigdo-lite ji použije jako základ nového souboru a nebudete muset stahovat nezměněná data dvakrát. Počítejte však s tím, že v případě aktualizace nebude chtít jigdo-lite automaticky přepsat vaše staré ISO, máte-li jej ve stejném adresáři, odkud jigdo-lite spouštíte. Musíte tedy původní soubor buď přejmenovat nebo přesunout - případně předat při spuštění parametr --force.

A je to. Zbývá už jen počkat, až jigdo/lite skončí. Stažené soubory budou umísťovány v nově vytvořeném podadresáři /tmp a pouze čas od času je program přesune do nově vznikajícího .tmp souboru.

Bittorrent

Druhý stahovací program, který vám chci přiblížit, se snaží řešit více méně podobný problém, avšak úplně jinou cestou. Určitě všichni znáte peer-to-peer sdílecí systémy, které uživatelům umožňují zpřístupnit ostatním připojeným zvolený obsah svého harddisku a na oplátku zase od zbytku světa stahovat. Profláknutý Napster, Gnutellu nebo třeba Direct Connect není třeba představovat. Bittorrent by se dal s troškou nadsázky k těmto programům připodobnit - jeho účel a zaměření jsou však dost odlišné.

Bittorrent je především určen pro nárazový nápor zájemců o aktuálně populární soubor. Narozdíl od jiných filesharingových služeb totiž jeho výkonnost roste úměrně s počtem aktivních stahovačů. Princip je následující:

Distributor velkého souboru, který díky své žádanosti zcela jistě na nějaký ten den způsobí zahlcení běžných cest (http, ftp) získávání (například dlouho očekávaná a oblíbená linuxová distribuce - z poslední doby budiž příkladem RedHat 9, Mandrake 9.1 a Slackware 9), vytvoří pomocí speciálního nástroje tzv. torrent. Torrent je poměrně malý soubor (s příponou .torrent), který obsahuje informace o stahovaných datech.

Uživatel zadá programu cestu k .torrent souboru, který nese informace o požadovaném souboru. Bittorrent stáhne .torrent soubor a na základě jeho obsahu kontaktuje "tracker" server. Tento stroj slouží jako koordinátor všech klientů. Tracker klientovi poskytne informaci o dalších klientech, od kterých může stahovat jednotlivé kusy dat. Klient na oplátku periodicky informuje tracker o tom, co již stihnul stáhnout. Tím nejen pomůže trackeru aktualizovat okruh klientů, kteří mají právě ty části dat, které stahující klient ještě postrádá, ale zároveň umožní trackeru zařadit svá stažená data do seznamu klientů, od kterých je možno tyto části stahovat.

Jakmile tedy získáte jakoukoliv část dat, stáváte se platným článkem spolupracujícího společenství, protože začínáte okamžitě poskytovat svá stažená data jiným klientů, kteří je ještě nemají.

Může se samozřejmě stát, že žádný z dostupných klientů neobsahuje žádné části dat, které by ostatní ještě neměli. V takovou chvíli vstupuje na scénu (opět - stejně jako na počátku) stroj, který se názývá "seed" - neboli klient, který má k dispozici kompletní soubor (ze začátku je pouze jeden - distributor; později jich přibývá, když klienti dokončí stahování, ale ponechají program běžet). Seed každému z klientů poskytne jinou část dalších dat a ti si je mezi sebou pak nasdílejí.

U starších a méně populárních torrentů může nastat i situace, kdy není v případě potřeby k dispozici žádný seed. Pak je nutné na chvíli přemluvit někoho, kdo disponuje celým souborem, aby spustil klienta a fungoval nějakou dobu jako dobrosrdečný seed. Tento problém však nastává opravdu zřídka, protože u všech aktuálních torrentů je k mání nespočet strojů, které prostě běží pořád (tj. nejsou to žádné domácí počítače).

Další problém, se kterým se můžete teoreticky setkat, je nefunkční tracker. To má za následek, že již připojení klienti mohou sice (trošku méně pružně) stahovat jeden od druhého dále, ale žádný další klient se nemůže do sdílení (a tedy i stahování) zapojit.

Z předchozího vyplývá, že Bittorrent funguje nejlépe, když se stahování/sdílení účastní co největší počet klientů. Takové řešení je proto perfektní odpovědí na velké množství bandwidth problémů. Například na Slashdotu se již stalo zvykem poskytovat k větším souborů (filmové trailery, zajímavé distribuce, apod.), které jsou velmi náchylné k tomu, aby byly (dočasně) vymazány z povrchu zemského - totiž internetového - tzv. "Slashdot effectem", .torrentové odkazy. Díky Bittorrentu pak nechvalně proslulé "slashdotting" začíná sloužit dobrému účelu.

Po instalaci ve Windows (prý) a na Linuxu, kde je také nainstalovaná Mozilla, by měla fungovat jednoduchá integrace (díky přidání nového MIME-Type (application/x-bittorrent)). Po kliknutí na link odkazující na .torrent soubor se automaticky spustí Bittorrent klient. Samozřejmě lze použít i příkazovou řádku. Pak je třeba programu předat adresu .torrent souboru jako parametr:

btdownloadgui --url cesta_k_.torrent_souboru

Takový příkaz spustí Bittorrent klienta s GTK+ GUI. Kromě samozřejmých GTK+ knihoven je třeba mít nainstalovaný Python ve verzi alespoň 2.2 (Bittorrent je komplet napsán v Pythonu). Pro GUI bude také potřeba wxPython (v Debianu balíček libwxgtk2.4-python).

Bittorrent GUI

Ještě zmíním, že o neporušenost stažených souborů se není třeba bát. Bittorrent využívá kontinuální kryptografické "hašování" (jakpak se to řekne česky?), takže integrita dat je zaručena.

Závěr

Jigdo i Bittorrent každý svým originálním způsobem ulehčují již tak dost zkoušené internetové konektivitě. Jejich používáním nejen ušetříte čas a námahu sobě, ale můžete mít i dobrý pocit z toho, že pomáháte těm, kteří obyčejně nejsou tak majetní, aby si mohli dovolit drahé a kvalitní hostování, ale přesto pouští do světa produkty, které jsou hodné vašeho zájmu.

Odkazy a zdroje

jigdo
Debian Jigdo mini-HOWTO
Bittorrent
Brian's BitTorrent FAQ and Guide
Smiler's BitTorrent links page (spousta odkazů na informace a také soubory, které lze stahovat pomocí Bittorrent)

Další články z této rubriky

Týden na ITBiz: Svět IT a burzy, umělá inteligence, Nvidia a outsourcing
Linuxové foto novinky: pozvolná evoluce
PCLinuxOS 2017.2 MATE - tak trochu zvláštní linuxová distribuce
Krátký pohled na Fedoru 25, Wayland a GNOME 3.22
Naprosto ničím nezajímavé Lubuntu 16.10

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